I found http://icl.cs.utk.edu/lapack-forum/viewtopic.php?f=2&t=1730 <http://icl.cs.utk.edu/lapack-forum/viewtopic.php?f=2&t=1730>
but I do not understand it. I am pretty sure PETSc is not providing in anyway even through its packages like fblaslapack blas_sgemv_x anyway I would focus on figuring out where those are coming from. Normal compilers won't need them. Do you use them? Good luck Barry > On Oct 23, 2020, at 7:21 PM, Thuc Bui <[email protected]> wrote: > > Dear Petsc Users, > > I hope someone out there has already encountered the same linking problem and > already figured this out, or has some idea how to resolve this issue. I have > google searched but haven’t found any solution. > > I successfully ported Petsc 3.13.5 both as shared and static libraries in > both Windows 10 (Visual Studio 2015, no Fortran) and Ubuntu 20.4 (gcc, g++. > gfortran 9.3), and successfully run “make check” in all. I am also able to > build my own shared libraries linked to either shared or static Petsc library > in both platforms. I was also able to link and execute my application to > either of these shared libraries in Windows. Unfortunately, I could only get > my app to link and execute with the shared library linked to the shared Petsc > library in Ubuntu, but not with the static Petsc library. > > On Ubuntu, below is how I build Petsc static library, which produces three > libraries: libpetsc.a, libfblas.a and libflapack.a > > ./configure CFLAGS="-fPIC" CXXFLAGS="-fPIC" FFLAGS="-fPIC" -with-cc=gcc > --with-cxx=g++ --with-fc=gfortran --with-openmp --with-debugging=0 > --download-fblaslapack --with-mpi=0 --with-shared-libraries=0 > > Below is the make output on how I build my shared library, cPoissons.so > linking to the static Petsc. Please note that I have to use > --allow-multiple-definition to override the redefinition errors in lapack and > blas. I also use --whole-archive to make sure the shared library has all the > required information from lapack and blas. > > gcc -fPIC -c -o gcc/matrixUtil.o matrixUtil.c > -I/home/bbwannabe/Documents/Petsc/latest/include > > -I/home/bbwannabe/Documents/Petsc/latest/include/petsc/private > > -I/home/bbwannabe/Documents/Petsc/latest/gcc-x64SRelease/include > gcc -fPIC -c -o gcc/PetscSolver.o PetscSolver.c > -I/home/bbwannabe/Documents/Petsc/latest/include > > -I/home/bbwannabe/Documents/Petsc/latest/include/petsc/private > > -I/home/bbwannabe/Documents/Petsc/latest/gcc-x64SRelease/include > gcc -fPIC -c -o gcc/LinearSystemSolver.o LinearSystemSolver.c > -I/home/bbwannabe/Documents/Petsc/latest/include > > -I/home/bbwannabe/Documents/Petsc/latest/include/petsc/private > > -I/home/bbwannabe/Documents/Petsc/latest/gcc-x64SRelease/include > gcc -fPIC -c -o gcc/cPoisson.o cPoisson.c > -I/home/bbwannabe/Documents/Petsc/latest/include > > -I/home/bbwannabe/Documents/Petsc/latest/include/petsc/private > > -I/home/bbwannabe/Documents/Petsc/latest/gcc-x64SRelease/include > gcc -fPIC -fopenmp -shared -o gcc/cPoissons.so gcc/matrixUtil.o > gcc/PetscSolver.o gcc/LinearSystemSolver.o gcc/cPoisson.o > -L/home/bbwannabe/Documents/Petsc/latest/gcc-x64SRelease/lib > -Wl,--allow-multiple-definition > -Wl,--whole-archive -lpetsc -lflapack -lfblas > -Wl,--no-whole-archive > > However, when I build my app linking to the above shared library > cPoissons.so. gfortran complains about undefined references, which seem to be > from blas as shown below from the output of make. Has anyone seen this kind > of linking problem before? > > Many thanks for your help. > Thuc Bui > Senior R&D Engineer > Calabazas Creek Research, Inc. > (650) 948-5361 (Office) > > gfortran -fPIC -o sPoisson3D Poisson3D.f > -L/home/bbwannabe/Documents/Nemesis/cPoisson/gcc -l:cPoissons.so > /usr/bin/ld: /home/bbwannabe/Documents/Nemesis/cPoisson/gcc/cPoissons.so: > undefined reference to `blas_sgemv_x_' > /usr/bin/ld: /home/bbwannabe/Documents/Nemesis/cPoisson/gcc/cPoissons.so: > undefined reference to `blas_zgemv_x_' > /usr/bin/ld: /home/bbwannabe/Documents/Nemesis/cPoisson/gcc/cPoissons.so: > undefined reference to `blas_cgbmv_x_' > /usr/bin/ld: /home/bbwannabe/Documents/Nemesis/cPoisson/gcc/cPoissons.so: > undefined reference to `blas_cgbmv2_x_' > /usr/bin/ld: /home/bbwannabe/Documents/Nemesis/cPoisson/gcc/cPoissons.so: > undefined reference to `blas_chemv2_x_' > /usr/bin/ld: /home/bbwannabe/Documents/Nemesis/cPoisson/gcc/cPoissons.so: > undefined reference to `blas_csymv2_x_' > /usr/bin/ld: /home/bbwannabe/Documents/Nemesis/cPoisson/gcc/cPoissons.so: > undefined reference to `blas_sgbmv_x_' > /usr/bin/ld: /home/bbwannabe/Documents/Nemesis/cPoisson/gcc/cPoissons.so: > undefined reference to `blas_dgemv_x_' > /usr/bin/ld: /home/bbwannabe/Documents/Nemesis/cPoisson/gcc/cPoissons.so: > undefined reference to `blas_zsymv_x_' > /usr/bin/ld: /home/bbwannabe/Documents/Nemesis/cPoisson/gcc/cPoissons.so: > undefined reference to `blas_csymv_x_' > /usr/bin/ld: /home/bbwannabe/Documents/Nemesis/cPoisson/gcc/cPoissons.so: > undefined reference to `blas_ssymv2_x_' > /usr/bin/ld: /home/bbwannabe/Documents/Nemesis/cPoisson/gcc/cPoissons.so: > undefined reference to `blas_ssymv_x_' > /usr/bin/ld: /home/bbwannabe/Documents/Nemesis/cPoisson/gcc/cPoissons.so: > undefined reference to `blas_zgemv2_x_' > /usr/bin/ld: /home/bbwannabe/Documents/Nemesis/cPoisson/gcc/cPoissons.so: > undefined reference to `blas_dsymv2_x_' > /usr/bin/ld: /home/bbwannabe/Documents/Nemesis/cPoisson/gcc/cPoissons.so: > undefined reference to `blas_zhemv_x_' > /usr/bin/ld: /home/bbwannabe/Documents/Nemesis/cPoisson/gcc/cPoissons.so: > undefined reference to `blas_zgbmv2_x_' > /usr/bin/ld: /home/bbwannabe/Documents/Nemesis/cPoisson/gcc/cPoissons.so: > undefined reference to `blas_sgemv2_x_' > /usr/bin/ld: /home/bbwannabe/Documents/Nemesis/cPoisson/gcc/cPoissons.so: > undefined reference to `blas_chemv_x_' > /usr/bin/ld: /home/bbwannabe/Documents/Nemesis/cPoisson/gcc/cPoissons.so: > undefined reference to `blas_dgemv2_x_' > /usr/bin/ld: /home/bbwannabe/Documents/Nemesis/cPoisson/gcc/cPoissons.so: > undefined reference to `blas_cgemv2_x_' > /usr/bin/ld: /home/bbwannabe/Documents/Nemesis/cPoisson/gcc/cPoissons.so: > undefined reference to `blas_sgbmv2_x_' > /usr/bin/ld: /home/bbwannabe/Documents/Nemesis/cPoisson/gcc/cPoissons.so: > undefined reference to `blas_zgbmv_x_' > /usr/bin/ld: /home/bbwannabe/Documents/Nemesis/cPoisson/gcc/cPoissons.so: > undefined reference to `blas_dgbmv_x_' > /usr/bin/ld: /home/bbwannabe/Documents/Nemesis/cPoisson/gcc/cPoissons.so: > undefined reference to `blas_zhemv2_x_' > /usr/bin/ld: /home/bbwannabe/Documents/Nemesis/cPoisson/gcc/cPoissons.so: > undefined reference to `blas_zsymv2_x_' > /usr/bin/ld: /home/bbwannabe/Documents/Nemesis/cPoisson/gcc/cPoissons.so: > undefined reference to `blas_dsymv_x_' > /usr/bin/ld: /home/bbwannabe/Documents/Nemesis/cPoisson/gcc/cPoissons.so: > undefined reference to `blas_dgbmv2_x_' > /usr/bin/ld: /home/bbwannabe/Documents/Nemesis/cPoisson/gcc/cPoissons.so: > undefined reference to `blas_cgemv_x_' > collect2: error: ld returned 1 exit status > make: *** [makefile:6: sPoisson3D] Error 1
