3D-ICE编译

最近要用3D-ICE仿真微流道散热,3D-ICE是linux下基于c编写的库,没怎么用过linux,搞了3天才成功,记录一下失败的过程以及成功的过程。

尝试的过程

先说失败的尝试

1.首先要有一个linux系统,最简单的,去win10应用商店里下载了一个ubuntu,很小巧方便,按照3D-ICE User Guide搞了一天失败,主要熟悉了一下linux系统的基本使用,一些linux基础知识和安装3D-ICE的过程,根据中间提示的error修改了源代码,各种include失败,结论是可能因为版本问题。

2.所谓的版本问题,因为要用到bison,flex和gcc,之前都是使用ubuntu18,然后使用sudo apt install命令下载这三个东西,但是版本都比10年前的高(3D-ICE是10多年前的),因为其中一些规则可能变化,所以编译失败。userguide也说明了这三个东西的版本。

3.又试了一下ubuntu16.04,版本还是高(现在是2020年3月,win10应用商店里只有ubuntu16和18了)。尝试方向改为在高版本ubuntu上安装这些低版本的工具,中间各种尝试,挑几个印象深的写。安装gcc4.1.2,非常远古的版本,ubuntu18已经是gcc7了,使用sudo apt install gcc-4.8可以安装4.8 版本,但是尽可能版本再低一点,尝试了编译gcc-4.1.2的源码的方法,编译失败,纠错未果,可能还是自带的高版本gcc甚至编译不了之前的gcc?瞎猜的,主要没有过多时间和精力去研究这个问题。又尝试了安装.deb的方法,根据我了解的,类似于windows的安装文件包,比较简单,安装上了,切换方式 apt update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.1 100, 其中100表示优先级(切换方法都能查到),查询版本使用gcc -v也显示是4.1,但是问题是不能生成可执行文件,找不到-lgcc_s?查了解决方法,有说添加链之类的并不能解决,遂放弃。但是问题是用gcc4.8还是会报错,错误是啥我忘了,心烦,放弃。大部分时间放在安装gcc4.1.2上,其他bison跟flex的低版本安装好像bison成功了,flex可能也是因为gcc不行所以没成功?

4.考虑到去学习一些知识的话时间太紧,于是想到直接安装低版本的ubuntu,其自带的便是低版本。之前被应用商店的16和18限制思路,直接下载ubuntu10的镜像,然后用vmware构建了环境,8太古老了,支持不太好,12还未尝试。

总之最后用ubuntu10.04成功了。

成功安装过程

1.Vmware+Ubuntu10.   直接下载就行,然后再Vmware里新建虚拟机,装上这个ubuntu,过程网上都有,不复杂。注意要设置一个共享文件夹,以便文件交换,方法都可以查到。

2.更新源,老版本的源都不维护了,将/etc/apt/sources.list里的源都更换,更换成啥也能搜到,搜旧版本ubuntu更新源,更新完之后,sudo apt-get update。然后直接sudo apt-install 命令安装上述的gcc ,bison,flex。bison与flex版本是与userguide一致的,gcc4.4高一些,也可以用。

3.接下来按照userguide说的来就好,注意也有一些坑。首先SuperLU里编译,按照readme里说的,把define一行注释掉,blaslib=啥那一行给更换掉。注意更换内容应该是libblas.a的,而不是platform啥的,不然后边找不到这个名字。然后make blaslib。接着要make superlulib,注意这时候要搞一个Codes文件夹,把SuperLU那个文件夹放在里边,不然也会报错找不到这个路径。SuperLU就搞好了。

4.再用户目录下建一个3d-ice的文件夹,把下载的3dice的文件和SuperLU文件夹放在里边,要把SuperLU/src里的文件复制到3d-ice/Include中,可能是库包含没搞好,暴力解决。更改makedef文件,SLUMAIN那里3dice之间加连字符3d-ice,SLULIBS要选择上边一个,注释掉下边那个/usr的。然后make即可。

以上有些名字不是很严谨,靠想象记忆写的,版本对了之后问题都是挺容易根据报错解决的。

主要是自己经验知识不足,可能以上方法也有点笨,时间有限,先用起来再说。

更新:ubuntu12也可以,gcc4.6  

你可能感兴趣的:(3D-ICE编译)