Hi,

We recently switched the CMake configuration on our GridPACK application to use 
the PkgConfig utility instead of Jeb Brown’s FindPETSc.cmake module. This seems 
to work on a number of platforms but it is failing to link on others. It 
appears that the build cannot find the LAPACK and BLAS libraries. The PETSc 
library I’m linking to (v3.16.3) was configured with -download-f2cblaslapack so 
it should have these libraries, but when I try and link one of the test 
applications in GridPACK I get the errors


/share/apps/gcc/6.1.0/bin/g++ -pthread -g -rdynamic 
CMakeFiles/greetings.dir/test/greetings.cpp.o -o greetings  
-Wl,-rpath,/qfs/projects/ops/rh6/openmpi/3.0.1/gcc/6.1.0/lib 
../math/libgridpack_math.a libgridpack_parallel.a ../timer/libgridpack_timer.a 
../environment/libgridpack_environment.a ../math/libgridpack_math.a 
/pic/projects/gridpack/software/boost_1_65_0/lib/libboost_mpi.a 
/pic/projects/gridpack/software/boost_1_65_0/lib/libboost_serialization.a 
/pic/projects/gridpack/software/boost_1_65_0/lib/libboost_random.a 
/pic/projects/gridpack/software/boost_1_65_0/lib/libboost_filesystem.a 
/pic/projects/gridpack/software/boost_1_65_0/lib/libboost_system.a 
/pic/projects/gridpack/software/ga-5.7/build_pr/lib/libga++.a 
/pic/projects/gridpack/software/ga-5.7/build_pr/lib/libga.a 
/pic/projects/gridpack/software/ga-5.7/build_pr/lib/libarmci.a -lrt 
/usr/lib64/librt.so /usr/lib64/libdl.so 
/qfs/projects/ops/rh6/openmpi/3.0.1/gcc/6.1.0/lib/libmpi.so 
../timer/libgridpack_timer.a libgridpack_parallel.a 
../configuration/libgridpack_configuration.a 
/pic/projects/gridpack/software/petsc-3.16.3/linux-openmpi-gnu-cxx-complex-opt/lib/libpetsc.a

/pic/projects/gridpack/software/petsc-3.16.3/linux-openmpi-gnu-cxx-complex-opt/lib/libpetsc.a(zstart.o):
 In function `petscinitializef_':

/pic/projects/gridpack/software/petsc-3.16.3/src/sys/objects/ftn-custom/zstart.c:280:
 undefined reference to `mpi_init_'

/pic/projects/gridpack/software/petsc-3.16.3/linux-openmpi-gnu-cxx-complex-opt/lib/libpetsc.a(baijfact.o):
 In function `MatSolve_SeqBAIJ_N':

/pic/projects/gridpack/software/petsc-3.16.3/src/mat/impls/baij/seq/baijfact.c:1462:
 undefined reference to `zgemv_'

/pic/projects/gridpack/software/petsc-3.16.3/src/mat/impls/baij/seq/baijfact.c:1475:
 undefined reference to `zgemv_'

/pic/projects/gridpack/software/petsc-3.16.3/src/mat/impls/baij/seq/baijfact.c:1478:
 undefined reference to `zgemv_'

/pic/projects/gridpack/software/petsc-3.16.3/linux-openmpi-gnu-cxx-complex-opt/lib/libpetsc.a(baijfact.o):
 In function `MatSolve_SeqBAIJ_N_NaturalOrdering':

/pic/projects/gridpack/software/petsc-3.16.3/src/mat/impls/baij/seq/baijfact.c:1407:
 undefined reference to `zgemv_'

/pic/projects/gridpack/software/petsc-3.16.3/src/mat/impls/baij/seq/baijfact.c:1420:
 undefined reference to `zgemv_'

/pic/projects/gridpack/software/petsc-3.16.3/linux-openmpi-gnu-cxx-complex-opt/lib/libpetsc.a(baijfact.o):/pic/projects/gridpack/software/petsc-3.16.3/sr

I suspect that the reason it worked for others and not for me is that they had 
viable blas and lapack libraries in their path and I don’t. Is there anything 
special you need to do to make sure that the build is pointed at the libraries 
that get created with the -download-f2cblaslapack option?

Bruce Palmer

Reply via email to