The contents of the petsc.pc file are listed below. It looks good to me. The 
Libs.private variable seems to include the -lf2clapack and -lf2cblas libraries. 
I don't know how this info gets propagated up the build chain.

Bruce

prefix=/pic/projects/gridpack/software/petsc-3.16.3/linux-openmpi-gnu-cxx-complex-opt
exec_prefix=${prefix}
includedir=${prefix}/include
libdir=${prefix}/lib
ccompiler=mpicc
cflags_extra=-fPIC -Wall -Wwrite-strings -Wno-strict-aliasing 
-Wno-unknown-pragmas -fstack-protector -fvisibility=hidden -g -O
cflags_dep=-MMD -MP
ldflag_rpath=-Wl,-rpath,
cxxcompiler=mpicxx
cxxflags_extra=-Wall -Wwrite-strings -Wno-strict-aliasing -Wno-unknown-pragmas 
-fstack-protector -fvisibility=hidden -g -O  -std=gnu++11
fcompiler=mpif90
fflags_extra=-Wall -ffree-line-length-0 -Wno-unused-dummy-argument -g -O

Name: PETSc
Description: Library to solve ODEs and algebraic equations
Version: 3.16.3
Cflags:   -I${includedir} -I/pic/projects/gridpack/software/petsc-3.16.3/include
Libs: -L${libdir} -lpetsc
Libs.private: 
-L/pic/projects/gridpack/software/petsc-3.16.3/linux-openmpi-gnu-cxx-complex-opt/lib
 -L/share/apps/openmpi/3.0.1/gcc/6.1.0/lib 
-L/qfs/projects/ops/rh6/gcc/6.1.0/lib/gcc/x86_64-pc-linux-gnu/6.1.0 
-L/qfs/projects/ops/rh6/gcc/6.1.0/lib/gcc 
-L/qfs/projects/ops/rh6/gcc/6.1.0/lib64 -L/qfs/projects/ops/rh6/gcc/6.1.0/lib 
-lspqr -lumfpack -lklu -lcholmod -lbtf -lccolamd -lcolamd -lcamd -lamd 
-lsuitesparseconfig -lrt -lsuperlu -lsuperlu_dist -lf2clapack -lf2cblas 
-lparmetis -lmetis -lm -lstdc++ -ldl -lmpi_usempif08 -lmpi_usempi_ignore_tkr 
-lmpi_mpifh -lmpi -lgfortran -lm -lgfortran -lm -lgcc_s -lquadmath -lpthread 
-lquadmath -lstdc++ -ldl

On 2/22/22, 8:39 AM, "Satish Balay" <ba...@mcs.anl.gov> wrote:

    The relevant pkg-config commands are:

    balay@sb /home/balay/petsc (release=)
    $ pkg-config --libs arch-linux-c-debug/lib/pkgconfig/petsc.pc 
    -L/home/balay/petsc/arch-linux-c-debug/lib -lpetsc 
    balay@sb /home/balay/petsc (release=)
    $ pkg-config --shared --libs arch-linux-c-debug/lib/pkgconfig/petsc.pc 
    -L/home/balay/petsc/arch-linux-c-debug/lib -lpetsc 
    balay@sb /home/balay/petsc (release=)
    $ pkg-config --static --libs arch-linux-c-debug/lib/pkgconfig/petsc.pc 
    -L/home/balay/petsc/arch-linux-c-debug/lib -lpetsc 
-L/home/balay/soft/mpich-3.4.2/lib -L/usr/lib/gcc/x86_64-redhat-linux/11 
-llapack -lblas -lm -lX11 -lstdc++ -ldl -lmpifort -lmpi -lgfortran -lm 
-lgfortran -lm -lgcc_s -lquadmath -lstdc++ -ldl 


    And more example usages in share/petsc/Makefile.user

    Satish


    On Tue, 22 Feb 2022, Barry Smith wrote:

    >  Bruce,
    > 
    >   Can you please send the PkgConfig calls that you make to get the PETSc 
values? And then exactly what PETSc PkgConfig returns.
    > 
    > Thanks
    > 
    >    Barry
    > 
    > 
    > > On Feb 22, 2022, at 11:03 AM, Palmer, Bruce J via petsc-users 
<petsc-users@mcs.anl.gov> wrote:
    > > 
    > > 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