查看文章 |
参考 http://dsec.pku.edu.cn/~rli/software.php http://hi.baidu.com/dawanzhi/blog/item/04969129c6bcc9225243c1a1.html OS: ubuntu 10.04 失败的体验 使用新立得安装的deal.ii , 首先configure 报错找不到 deal.ii include file 的路径, export EXTRA_INCDIR="-I/usr/include" (使用链接把这个路径修改正确后,configure 正确) export EXTRA_LIBDIR="-L/usr/lib" (configure: error: deal.II library not found, 总是不成功) 成功的体验: 自己下载安装了 deal.ii 6.0的版本, 安装位置是 ~/Downloads/deal.II 。 cd deal.II make lac base 安装后在deal.II 中产生了一个lib, 但是没有产生include 文件夹, 就 mkdir include cd include ln -s ../base/include/base ./ ln -s ../lac/include/lac ./ 然后使用 export (不用下面两个命令,AFEpack configure 是报错的) export EXTRA_INCDIR="-I/home/tlu/Downloads/deal.II/include" export EXTRA_LIBDIR="-L/home/tlu/Downloads/deal.II/lib" 然后回到 AFEpack 的文件夹 执行下面的命令就可以编译好了 aclocal automake autoconf ./configure make 首先报错是 mpi 部分的安装 参考http://hi.baidu.com/qjzfd2009/blog/item/a53936d963d68f6ad1164e48.html 1. cd /usr/include sudo ln -s ~/Downloads/AFEPack/library/include ./AFEPack cd ~/Downloads/AFEPack/library/include ln -s ~/Downloads/AFEPack/library/mpi/include ./mpi 2. 修改 ~/Downloads/AFEPack/library/mpi/Makefile.1 MPICC=g++ -I$(MPIHOME)/include # 加上 mpi 的头文件的位置 修改成 MPICC=$(CXX) -I/usr/include/mpi -DMPICH_IGNORE_CXX_SEEK # 加上 mpi 的头文件的位>置 非常感谢李若帮我改了过来。 cd /usr/lib sudo ln -s /home/tlu/Downloads/AFEpack/library/lib/lib* ./ 例子的编译后还报错, 是一个链接的错误 libAFEpack.so undefined reference to `dealii::LogStream::get_stream()' ------ 下面改成安装最新的deal.ii 7.10 参考 http://hi.baidu.com/cuif1979/blog/item/ff47fee835e0a44079f05531.html ./configure --with-blas='f77blas -latlas' --with-lapack='lapack -latlas' --enable-mpi 应用上面的configure 命令,然后 make optimized ====现在全搞砸了,怎么在 AFEPack 中 configure 也找不到 deal.II 库了== 新立得安装的 deal.ii 删除了, 然后自己安装 deal.II 6.0, 6.1.0 都不能行了,现在安装 6.3.1倒是成功了, 现在如何AFEPack 还是找不到deal.ii 库函数, 仔细看了configure 文件发现,他就是要看看如何编译链接成功这个文件 tlu@tlu-laptop:~/Downloads/AFEPack$ cat a.cpp g++ -c -o a.o a.cpp -I/home/tlu/Downloads/deal.II/include -I /home/tlu/Downloads/deal.II/contrib/tbb/tbb22_20090809oss/include 成功编译。 然后我们再看链接: g++ -o a.exe a.o -llac -lbase -llapack -latlas 上面的命令可以链接成功, 上面的 -llapack -latlas 是需要的,因为我们在 编译 deal.II 的时候使用了这两个命令。 现在再去山区 autom4*, 修改 configure.in 中的 -llac -lbase 成 -llac -lbase -llapack -latlas 然后 export EXTRA_INCDIR=" -I/home/tlu/Downloads/deal.II/include -I /home/tlu/Downloads/deal.II/contrib/tbb/tbb22_20090809oss/include" export EXTRA_LIBDIR="-L/home/tlu/Downloads/deal.II/lib" 然后 ./configure 成功. mpi 编译的部分和上面的修改相同,一个是把 AFEPack 的库进行做个链接,一个是修改 AFEPack/library/mpi/Makefile.1 现在终于连例子也编译成功了。 但是例子中的程序的运行却报错: ./main: error while loading shared libraries: libbase.so.6.3.1: cannot open shared object file: No such file or directory tlu@tlu-laptop:~/Downloads/AFEPack/example/possion_equation$ ./run 运行的时候需要使用 ./run D.d 其中D.d 是描述计算区域的文件,是easymesh 的输入。 现在报错是 n_element=0 现在安装了 easymesh, 然后使用 EasyMesh D 生成了网格文件, 然后运行 ./run D 仍然是同样的错误,这真是有点奇怪。 错误如下: tlu@tlu-laptop:~/Downloads/AFEPack/example/possion_equation$ ./run D 经过 的指点,就去李若的主页上去下载easymesh, 果然和从easymesh的官方网站上下来的略有不同 现在例子可以正常运行了。 李若的easymesh (是EasyMesh 的老版本) 和官方的easymesh(是新版本)的差别是网格输出的格式有细微变化。 另外运行的时候,还需要设置环境变量. AFEPack使用一个环境变量来告诉软件包共享库以及模板单元的位置. 这个变量的名字是 "AFEPACK_TEMPLATE_PATH" 如果在你的应用中, 你将会使用三角和矩形元, 那么你可以如下设置(在bash中): export AFEPACK_TEMPLATE_PATH=/usr/local/AFEPack/template/triangle:/usr/local/AFEPack/template/rectangle
|
