Link error: undefined reference to 'pgf'

HI, I am trying to immigrate my CFD code to GPU using NVC++, However, i got some errors showing as follow,

/usr/local/bin/ld: /opt/nvidia/hpc_sdk/Linux_x86_64/23.3/compilers/lib/liblapack.so: undefined reference to `pgf90_str_cpy1'
/usr/local/bin/ld: /opt/nvidia/hpc_sdk/Linux_x86_64/23.3/compilers/lib/liblapack.so: undefined reference to `pgf90_strcmp_klen'
/usr/local/bin/ld: /opt/nvidia/hpc_sdk/Linux_x86_64/23.3/compilers/lib/liblapack.so: undefined reference to `pgf90_str_copy_klen'
/usr/local/bin/ld: /opt/nvidia/hpc_sdk/Linux_x86_64/23.3/compilers/lib/liblapack.so: undefined reference to `pghpf_maxloc_i8'
/usr/local/bin/ld: /opt/nvidia/hpc_sdk/Linux_x86_64/23.3/compilers/lib/liblapack.so: undefined reference to `pgf90_set_intrin_type_i8'
/usr/local/bin/ld: /opt/nvidia/hpc_sdk/Linux_x86_64/23.3/compilers/lib/liblapack.so: undefined reference to `__get_size_of'
pgacclnk: child process exit status 1: /usr/local/bin/ld

My NVIDIA HPC SDK version is 23.3. Actually, i really can not find libpgf90*.so, only I can find is the compiler.

$ find /opt/ -name *pgf*
/opt/nvidia/hpc_sdk/Linux_x86_64/23.3/compilers/bin/pgfortran
/opt/nvidia/hpc_sdk/Linux_x86_64/23.3/compilers/bin/pgf77
/opt/nvidia/hpc_sdk/Linux_x86_64/23.3/compilers/bin/pgf95
/opt/nvidia/hpc_sdk/Linux_x86_64/23.3/compilers/bin/pgf90
/opt/nvidia/hpc_sdk/Linux_x86_64/23.3/compilers/man/cat1/pgf77.1
/opt/nvidia/hpc_sdk/Linux_x86_64/23.3/compilers/man/cat1/pgf90.1
/opt/nvidia/hpc_sdk/Linux_x86_64/23.3/compilers/man/cat1/pgfortran.1
/opt/nvidia/hpc_sdk/Linux_x86_64/23.3/compilers/man/cat1/pgf95.1
/opt/nvidia/hpc_sdk/Linux_x86_64/23.3/compilers/man/man1/pgf77.1
/opt/nvidia/hpc_sdk/Linux_x86_64/23.3/compilers/man/man1/pgf90.1
/opt/nvidia/hpc_sdk/Linux_x86_64/23.3/compilers/man/man1/pgfortran.1
/opt/nvidia/hpc_sdk/Linux_x86_64/23.3/compilers/man/man1/pgf95.1

How can i fix the problem?

Add the flag “-fortranlibs” to your link line so the Fortran runtime libraries are added. Lapack is built with nvfortran, hence needs these libraries.

Actually, i really can not find libpgf90*.so, only I can find is the compiler.

The libraries were renamed to use the “nv” prefix when we rebranded PGI to NVHPC SDK, though we didn’t rename the internal symbols.

Hope this helps,
Mat

It works, thanks a lot.