[petsc-users] Configuring with CMake
Satish Balay
balay at mcs.anl.gov
Tue Feb 22 12:21:32 CST 2022
https://cmake.org/cmake/help/latest/module/FindPkgConfig.html
>>>
Two sets of values exist: One for the common case (<XXX> = <prefix>) and another for the information pkg-config provides when called with the --static option (<XXX> = <prefix>_STATIC).
<<<
So perhaps CMAKE is already setting the _STATIC variant of (for PETSC_LIB or equivalent) variable that's currently used)?
Satish
On Tue, 22 Feb 2022, Palmer, Bruce J via petsc-users wrote:
> 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" <balay at mcs.anl.gov> wrote:
>
> The relevant pkg-config commands are:
>
> balay at 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 at 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 at 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 at 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 libgri
dpack_
> 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
> >
> >
>
>
More information about the petsc-users
mailing list