我尝试使用此配置编译 PESTC:
./configure --with-cc=gcc --with-cxx=g++ --with-fc=gfortran --download-f-blas-lapack=1 --download-openmpi --with-shared-libraries
make PETSC_DIR=/tmp/petsc-3.3-p7 PETSC_ARCH=arch-linux2-c-debug all
但是在编译我的使用 petsc 的库时,即使我链接了所有 petsc 库,它也会在运行undefined symbol: _Z10VecGetSizeP6_p_VecPi
时libpetscvec.so
抱怨libpetscsnes.so
:
我还发现它会生成一些.mod
与这些非生成库同名的库(例如:)/tmp/petsc-3.3-p7/arch-linux2-c-debug/include/petscsnes.mod
。
所以我不确定我是否缺少一个标志,该标志应该告诉编译器不给我库模块,或者它们是否在某些外部包中,并且我应该使用--download-SOMEPACKAGE
.
这是在.so
中生成的库$PETSC_DIR/$PETSC_ARCH/lib
:
libmca_common_sm.so
libmca_common_sm.so.1
libmca_common_sm.so.1.0.2
libmpi.so
libmpi.so.0
libmpi.so.0.0.4
libmpi_cxx.so
libmpi_cxx.so.0
libmpi_cxx.so.0.0.1
libmpi_f77.so
libmpi_f77.so.0
libmpi_f77.so.0.0.3
libmpi_f90.so
libmpi_f90.so.0
libmpi_f90.so.0.1.0
libopen-pal.so
libopen-pal.so.0
libopen-pal.so.0.0.0
libopen-rte.so
libopen-rte.so.0
libopen-rte.so.0.0.0
libopenmpi_malloc.so
libopenmpi_malloc.so.0
libopenmpi_malloc.so.0.0.0
libpetsc.so