2015-06-08 2 views
1

Я попытался собрать PESTC используя эту конфигурацию:PETSC 3.3 - Как скомпилировать и иметь все файлы libpetscSOMETHING.so?

./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 

Но при компиляции моего LIB, который использует PETSc, даже если я связывал весь PETSc LIBS это жалуется на время выполнения: undefined symbol: _Z10VecGetSizeP6_p_VecPi, и после некоторого поиска в интерн I натолкнулся на некоторые .so, что мои домашние животные не строили, такие как libpetscvec.so или libpetscsnes.so.

Я также обнаружил, что он сгенерирует .mod с тем же именем этих не созданных библиотек (например: /tmp/petsc-3.3-p7/arch-linux2-c-debug/include/petscsnes.mod).

, так что я не уверен, что мне не хватает флага, который должен сообщить компилятору, что он дает мне libs никаких модулей, а может быть, если они находятся в некоторых внешних пакетах и ​​что я должен установить с --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 

ответ

0

Это один был довольно обмануть вот как я ее решил:

./configure --with-pic=1 \ 
     --with-x11=0 --download-openmpi=yes \ 
     --doCleanup=1 --useThreads=0 \ 
     --with-shared-libraries=1 --with-clanguage=Cxx \ 
     --with-c++-support --with-fc=0 --ignore-cygwin-link \ 
     --with-blas-lib="[$VENDOR_LIBS/intel/mkl/lib/intel64/libmkl_blas95_lp64.a,$VENDOR_LIBS/intel/mkl/lib/intel64/libmkl_intel_lp64.so,$VENDOR_LIBS/intel/mkl/lib/intel64/libmkl_core.so,$VENDOR_LIBS/intel/mkl/lib/intel64/libmkl_intel_thread.so,$VENDOR_LIBS/intel/lib/intel64/libiomp5.so]" \ 
     --with-lapack-lib="[$VENDOR_LIBS/intel/mkl/lib/intel64/libmkl_lapack95_lp64.a]" 

Так что, да, я видел, что я отсутствовали библиотеки Intel MKL (что было большой частью ошибки, но также были остальными аргументами, переданными в configure).

Я не уверен, что это то, что будет полезно для других, так как эта библиотека имеет множество различных конфигураций для многих случаев. Но, эй, кто знает ...

Смежные вопросы