Linking fails with "undefined reference to gnutls..."
When I build a project that depends on libnfs, I get linker errors:
[...]
/usr/bin/ld: /usr/lib/gcc/x86_64-pc-linux-gnu/15.1.1/../../../../lib/libnfs.so: undefined reference to `gnutls_certificate_set_x509_key_file'
I think libnfs should probably link to gnutls, but it doesn't:
$ ldd /lib/libnfs.so
linux-vdso.so.1 (0x0000777d2fdc3000)
libgssapi_krb5.so.2 => /usr/lib/libgssapi_krb5.so.2 (0x0000777d2fcd7000)
libc.so.6 => /usr/lib/libc.so.6 (0x0000777d2fae7000)
libkrb5.so.3 => /usr/lib/libkrb5.so.3 (0x0000777d2fa22000)
libk5crypto.so.3 => /usr/lib/libk5crypto.so.3 (0x0000777d2f9f5000)
libcom_err.so.2 => /usr/lib/libcom_err.so.2 (0x0000777d2f9ef000)
libkrb5support.so.0 => /usr/lib/libkrb5support.so.0 (0x0000777d2f9e1000)
libkeyutils.so.1 => /usr/lib/libkeyutils.so.1 (0x0000777d2f9d8000)
libresolv.so.2 => /usr/lib/libresolv.so.2 (0x0000777d2f9c6000)
/usr/lib64/ld-linux-x86-64.so.2 (0x0000777d2fdc5000)
Upstream seems to be fiddling with this:
https://github.com/sahlberg/libnfs/commit/0d4b18109630751a0e646376c3565f0befeed0fa
https://github.com/sahlberg/libnfs/commit/d205297a10bf8d7f8846bf42f0ed618543a561a9
so possibly an upstream bug.
When I build libnfs from upstream locally on arch, I get this result:
$ cmake -B build . -G Ninja && ninja -C build
-- The C compiler identification is GNU 15.1.1
[...]
-- Performing Test HAVE_GNUTLS_TRANSPORT_IS_KTLS_ENABLED
-- Performing Test HAVE_GNUTLS_TRANSPORT_IS_KTLS_ENABLED - Success
[...]
-- Found GnuTLS: /usr/lib/libgnutls.so (found suitable version "3.8.9", minimum required is "3.4.6")
-- Looking for gnutls/gnutls.h
-- Looking for gnutls/gnutls.h - found
-- Looking for linux/tls.h
-- Looking for linux/tls.h - found
-- Using /usr/lib/libgnutls.so
-- Configuring done (3.7s)
-- Generating done (0.0s)
-- Build files have been written to: ~/work/foss/libnfs/build
ninja: Entering directory `build'
[29/29] Creating library symlink lib/libnfs.so
$ ldd build/lib/libnfs.so
linux-vdso.so.1 (0x0000760b6f7e7000)
libgnutls.so.30 => /usr/lib/libgnutls.so.30 (0x0000760b6f400000)
[...]
$ grep ^Libs build/libnfs.pc
Libs: -L${libdir} -lnfs /usr/lib/libgnutls.so
gnutls is linked properly, but the pcfile looks odd.
Edited by Ronan Pigott