<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=us-ascii"><meta name=Generator content="Microsoft Word 14 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri","sans-serif";}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-US link=blue vlink=purple><div class=WordSection1><p class=MsoNormal><span style='font-family:"Times New Roman","serif"'>Dear Petsc Users, <o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Times New Roman","serif"'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-family:"Times New Roman","serif"'>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.<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Times New Roman","serif"'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-family:"Times New Roman","serif"'>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.<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Times New Roman","serif"'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-family:"Times New Roman","serif"'>On Ubuntu, below is how I build Petsc static library, which produces three libraries: libpetsc.a, libfblas.a and libflapack.a<o:p></o:p></span></p><p class=MsoNormal><i><o:p> </o:p></i></p><p class=MsoNormal><i>./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<o:p></o:p></i></p><p class=MsoNormal><span style='font-family:"Times New Roman","serif"'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-family:"Times New Roman","serif"'>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.<o:p></o:p></span></p><p class=MsoNormal><b><span style='font-family:"Times New Roman","serif"'><o:p> </o:p></span></b></p><p class=MsoNormal><i>gcc -fPIC -c -o gcc/matrixUtil.o matrixUtil.c <o:p></o:p></i></p><p class=MsoNormal><i>                -I/home/bbwannabe/Documents/Petsc/latest/include <o:p></o:p></i></p><p class=MsoNormal><i>                -I/home/bbwannabe/Documents/Petsc/latest/include/petsc/private <o:p></o:p></i></p><p class=MsoNormal><i>                -I/home/bbwannabe/Documents/Petsc/latest/gcc-x64SRelease/include              <o:p></o:p></i></p><p class=MsoNormal><i>gcc -fPIC -c -o gcc/PetscSolver.o PetscSolver.c <o:p></o:p></i></p><p class=MsoNormal><i>                -I/home/bbwannabe/Documents/Petsc/latest/include <o:p></o:p></i></p><p class=MsoNormal><i>                -I/home/bbwannabe/Documents/Petsc/latest/include/petsc/private <o:p></o:p></i></p><p class=MsoNormal><i>                -I/home/bbwannabe/Documents/Petsc/latest/gcc-x64SRelease/include<o:p></o:p></i></p><p class=MsoNormal><i>gcc -fPIC -c -o gcc/LinearSystemSolver.o LinearSystemSolver.c <o:p></o:p></i></p><p class=MsoNormal><i>                -I/home/bbwannabe/Documents/Petsc/latest/include <o:p></o:p></i></p><p class=MsoNormal><i>                -I/home/bbwannabe/Documents/Petsc/latest/include/petsc/private <o:p></o:p></i></p><p class=MsoNormal><i>                -I/home/bbwannabe/Documents/Petsc/latest/gcc-x64SRelease/include<o:p></o:p></i></p><p class=MsoNormal><i>gcc -fPIC -c -o gcc/cPoisson.o cPoisson.c <o:p></o:p></i></p><p class=MsoNormal><i>                -I/home/bbwannabe/Documents/Petsc/latest/include <o:p></o:p></i></p><p class=MsoNormal><i>                -I/home/bbwannabe/Documents/Petsc/latest/include/petsc/private <o:p></o:p></i></p><p class=MsoNormal><i>                -I/home/bbwannabe/Documents/Petsc/latest/gcc-x64SRelease/include<o:p></o:p></i></p><p class=MsoNormal><i>gcc -fPIC -fopenmp -shared -o gcc/cPoissons.so gcc/matrixUtil.o gcc/PetscSolver.o gcc/LinearSystemSolver.o gcc/cPoisson.o <o:p></o:p></i></p><p class=MsoNormal><i>                -L/home/bbwannabe/Documents/Petsc/latest/gcc-x64SRelease/lib <o:p></o:p></i></p><p class=MsoNormal><i>                -Wl,--allow-multiple-definition <o:p></o:p></i></p><p class=MsoNormal><i>                -Wl,--whole-archive -lpetsc -lflapack -lfblas -Wl,--no-whole-archive<o:p></o:p></i></p><p class=MsoNormal><i><o:p> </o:p></i></p><p class=MsoNormal><span style='font-family:"Times New Roman","serif"'>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? <o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Times New Roman","serif"'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-family:"Times New Roman","serif"'>Many thanks for your help.<o:p></o:p></span></p><p class=MsoNormal>Thuc Bui<o:p></o:p></p><p class=MsoNormal>Senior R&D Engineer<o:p></o:p></p><p class=MsoNormal>Calabazas Creek Research, Inc.<o:p></o:p></p><p class=MsoNormal>(650) 948-5361 (Office)<o:p></o:p></p><p class=MsoNormal><span style='font-family:"Times New Roman","serif"'><o:p> </o:p></span></p><p class=MsoNormal><i>gfortran -fPIC -o sPoisson3D Poisson3D.f -L/home/bbwannabe/Documents/Nemesis/cPoisson/gcc -l:cPoissons.so <o:p></o:p></i></p><p class=MsoNormal><i>/usr/bin/ld: /home/bbwannabe/Documents/Nemesis/cPoisson/gcc/cPoissons.so: undefined reference to `blas_sgemv_x_'<o:p></o:p></i></p><p class=MsoNormal><i>/usr/bin/ld: /home/bbwannabe/Documents/Nemesis/cPoisson/gcc/cPoissons.so: undefined reference to `blas_zgemv_x_'<o:p></o:p></i></p><p class=MsoNormal><i>/usr/bin/ld: /home/bbwannabe/Documents/Nemesis/cPoisson/gcc/cPoissons.so: undefined reference to `blas_cgbmv_x_'<o:p></o:p></i></p><p class=MsoNormal><i>/usr/bin/ld: /home/bbwannabe/Documents/Nemesis/cPoisson/gcc/cPoissons.so: undefined reference to `blas_cgbmv2_x_'<o:p></o:p></i></p><p class=MsoNormal><i>/usr/bin/ld: /home/bbwannabe/Documents/Nemesis/cPoisson/gcc/cPoissons.so: undefined reference to `blas_chemv2_x_'<o:p></o:p></i></p><p class=MsoNormal><i>/usr/bin/ld: /home/bbwannabe/Documents/Nemesis/cPoisson/gcc/cPoissons.so: undefined reference to `blas_csymv2_x_'<o:p></o:p></i></p><p class=MsoNormal><i>/usr/bin/ld: /home/bbwannabe/Documents/Nemesis/cPoisson/gcc/cPoissons.so: undefined reference to `blas_sgbmv_x_'<o:p></o:p></i></p><p class=MsoNormal><i>/usr/bin/ld: /home/bbwannabe/Documents/Nemesis/cPoisson/gcc/cPoissons.so: undefined reference to `blas_dgemv_x_'<o:p></o:p></i></p><p class=MsoNormal><i>/usr/bin/ld: /home/bbwannabe/Documents/Nemesis/cPoisson/gcc/cPoissons.so: undefined reference to `blas_zsymv_x_'<o:p></o:p></i></p><p class=MsoNormal>/usr/bin/ld: /home/bbwannabe/Documents/Nemesis/cPoisson/gcc/cPoissons.so: undefined reference to `blas_csymv_x_'<o:p></o:p></p><p class=MsoNormal>/usr/bin/ld: /home/bbwannabe/Documents/Nemesis/cPoisson/gcc/cPoissons.so: undefined reference to `blas_ssymv2_x_'<o:p></o:p></p><p class=MsoNormal>/usr/bin/ld: /home/bbwannabe/Documents/Nemesis/cPoisson/gcc/cPoissons.so: undefined reference to `blas_ssymv_x_'<o:p></o:p></p><p class=MsoNormal>/usr/bin/ld: /home/bbwannabe/Documents/Nemesis/cPoisson/gcc/cPoissons.so: undefined reference to `blas_zgemv2_x_'<o:p></o:p></p><p class=MsoNormal>/usr/bin/ld: /home/bbwannabe/Documents/Nemesis/cPoisson/gcc/cPoissons.so: undefined reference to `blas_dsymv2_x_'<o:p></o:p></p><p class=MsoNormal>/usr/bin/ld: /home/bbwannabe/Documents/Nemesis/cPoisson/gcc/cPoissons.so: undefined reference to `blas_zhemv_x_'<o:p></o:p></p><p class=MsoNormal>/usr/bin/ld: /home/bbwannabe/Documents/Nemesis/cPoisson/gcc/cPoissons.so: undefined reference to `blas_zgbmv2_x_'<o:p></o:p></p><p class=MsoNormal>/usr/bin/ld: /home/bbwannabe/Documents/Nemesis/cPoisson/gcc/cPoissons.so: undefined reference to `blas_sgemv2_x_'<o:p></o:p></p><p class=MsoNormal>/usr/bin/ld: /home/bbwannabe/Documents/Nemesis/cPoisson/gcc/cPoissons.so: undefined reference to `blas_chemv_x_'<o:p></o:p></p><p class=MsoNormal>/usr/bin/ld: /home/bbwannabe/Documents/Nemesis/cPoisson/gcc/cPoissons.so: undefined reference to `blas_dgemv2_x_'<o:p></o:p></p><p class=MsoNormal>/usr/bin/ld: /home/bbwannabe/Documents/Nemesis/cPoisson/gcc/cPoissons.so: undefined reference to `blas_cgemv2_x_'<o:p></o:p></p><p class=MsoNormal>/usr/bin/ld: /home/bbwannabe/Documents/Nemesis/cPoisson/gcc/cPoissons.so: undefined reference to `blas_sgbmv2_x_'<o:p></o:p></p><p class=MsoNormal>/usr/bin/ld: /home/bbwannabe/Documents/Nemesis/cPoisson/gcc/cPoissons.so: undefined reference to `blas_zgbmv_x_'<o:p></o:p></p><p class=MsoNormal>/usr/bin/ld: /home/bbwannabe/Documents/Nemesis/cPoisson/gcc/cPoissons.so: undefined reference to `blas_dgbmv_x_'<o:p></o:p></p><p class=MsoNormal>/usr/bin/ld: /home/bbwannabe/Documents/Nemesis/cPoisson/gcc/cPoissons.so: undefined reference to `blas_zhemv2_x_'<o:p></o:p></p><p class=MsoNormal>/usr/bin/ld: /home/bbwannabe/Documents/Nemesis/cPoisson/gcc/cPoissons.so: undefined reference to `blas_zsymv2_x_'<o:p></o:p></p><p class=MsoNormal>/usr/bin/ld: /home/bbwannabe/Documents/Nemesis/cPoisson/gcc/cPoissons.so: undefined reference to `blas_dsymv_x_'<o:p></o:p></p><p class=MsoNormal>/usr/bin/ld: /home/bbwannabe/Documents/Nemesis/cPoisson/gcc/cPoissons.so: undefined reference to `blas_dgbmv2_x_'<o:p></o:p></p><p class=MsoNormal>/usr/bin/ld: /home/bbwannabe/Documents/Nemesis/cPoisson/gcc/cPoissons.so: undefined reference to `blas_cgemv_x_'<o:p></o:p></p><p class=MsoNormal>collect2: error: ld returned 1 exit status<o:p></o:p></p><p class=MsoNormal>make: *** [makefile:6: sPoisson3D] Error 1<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p></div></body></html>