Gcc

ld 在它前面找不到圖書館

  • February 24, 2020

我正在嘗試建構一個涉及 on 的 rust 程序,diesel並且postgresql建構Fedora 31失敗,因為連結器找不到libpq. 因為它可以用 重現gcc,所以我用它gcc來縮短問題。

gcc -L /lib64 -lpq
/usr/bin/ld: cannot find -lpq
ls /lib64 | grep libpq
libpq.so.5
libpq.so.5.11
ldd /lib64/libpq.so.5
       linux-vdso.so.1 (0x00007ffc06ddd000)
       libssl.so.1.1 => /usr/lib64/libssl.so.1.1 (0x00007f4885ea7000)
       libcrypto.so.1.1 => /usr/lib64/libcrypto.so.1.1 (0x00007f4885bc7000)
       libgssapi_krb5.so.2 => /usr/lib64/libgssapi_krb5.so.2 (0x00007f4885b75000)
       libldap_r-2.4.so.2 => /usr/lib64/libldap_r-2.4.so.2 (0x00007f4885b1d000)
       libpthread.so.0 => /usr/lib64/libpthread.so.0 (0x00007f4885afb000)
       libc.so.6 => /usr/lib64/libc.so.6 (0x00007f4885932000)
       libz.so.1 => /usr/lib64/libz.so.1 (0x00007f4885916000)
       libdl.so.2 => /usr/lib64/libdl.so.2 (0x00007f488590f000)
       libkrb5.so.3 => /usr/lib64/libkrb5.so.3 (0x00007f488581e000)
       libk5crypto.so.3 => /usr/lib64/libk5crypto.so.3 (0x00007f4885805000)
       libcom_err.so.2 => /usr/lib64/libcom_err.so.2 (0x00007f48857fe000)
       libkrb5support.so.0 => /usr/lib64/libkrb5support.so.0 (0x00007f48857ec000)
       libkeyutils.so.1 => /usr/lib64/libkeyutils.so.1 (0x00007f48857e3000)
       libresolv.so.2 => /usr/lib64/libresolv.so.2 (0x00007f48857ca000)
       liblber-2.4.so.2 => /usr/lib64/liblber-2.4.so.2 (0x00007f48857b9000)
       libsasl2.so.3 => /usr/lib64/libsasl2.so.3 (0x00007f4885799000)
       /lib64/ld-linux-x86-64.so.2 (0x00007f4885f8c000)
       libselinux.so.1 => /usr/lib64/libselinux.so.1 (0x00007f488576c000)
       libcrypt.so.2 => /usr/lib64/libcrypt.so.2 (0x00007f488572f000)
       libpcre2-8.so.0 => /usr/lib64/libpcre2-8.so.0 (0x00007f488569d000)

例如,libpthread 也位於 中lib64,可以找到:

gcc -L /lib64 -lpthread
/usr/bin/ld: /usr/lib/gcc/x86_64-redhat-linux/9/../../../../lib64/crt1.o: in function `_start':

我是否遺漏了某些東西,或者通常應該立即找到它?

-lpq導致連結器查找libpq.so沒有 soname 後綴的 。要在 Fedora 上提供此功能,您應該安裝libpq-devel

sudo dnf install libpq-devel

引用自:https://unix.stackexchange.com/questions/569385