我正在尝试安装原始缓冲区Redhat 系统(Amazon EC2 的 Linux 版本)上的库。我运行configure
, make
,make install
没有出现任何问题,并且.so
库被复制到/usr/local/lib
.由于 Redhat/usr/local/lib
中不包含该目录/etc/ld.so.conf
,因此我添加了它,然后运行ldconfig
以更新链接。
我的问题是,无论出于何种原因,即使它位于目录中ldconfig
,也没有拾取。libprotobuf.so
/usr/local/lib
这是输出ls -l /usr/local/lib
:
total 61336
-rw-r--r-- 1 root root 17654940 Mar 26 02:39 libprotobuf.a
-rwxr-xr-x 1 root root 994 Mar 26 02:39 libprotobuf.la
-rw-r--r-- 1 root root 1948106 Mar 26 02:39 libprotobuf-lite.a
-rwxr-xr-x 1 root root 1029 Mar 26 02:39 libprotobuf-lite.la
lrwxrwxrwx 1 root root 25 Mar 26 02:39 libprotobuf-lite.so -> libprotobuf-lite.so.7.0.0
lrwxrwxrwx 1 root root 25 Mar 26 02:39 libprotobuf-lite.so.7 -> libprotobuf-lite.so.7.0.0
-rwxr-xr-x 1 root root 893083 Mar 26 02:39 libprotobuf-lite.so.7.0.0
lrwxrwxrwx 1 root root 20 Mar 26 02:39 libprotobuf.so -> libprotobuf.so.7.0.0
lrwxrwxrwx 1 root root 20 Mar 26 02:39 libprotobuf.so.7 -> libprotobuf.so.7.0.0
-rwxr-xr-x 1 root root 7326093 Mar 26 02:39 libprotobuf.so.7.0.0
-rw-r--r-- 1 root root 25883264 Mar 26 02:39 libprotoc.a
-rwxr-xr-x 1 root root 1010 Mar 26 02:39 libprotoc.la
lrwxrwxrwx 1 root root 18 Mar 26 02:39 libprotoc.so -> libprotoc.so.7.0.0
lrwxrwxrwx 1 root root 18 Mar 26 02:39 libprotoc.so.7 -> libprotoc.so.7.0.0
-rwxr-xr-x 1 root root 9071740 Mar 26 02:39 libprotoc.so.7.0.0
drwxr-xr-x 2 root root 4096 Mar 26 02:39 pkgconfig
这是输出ldconfig -v | grep protobuf
:
libprotobuf.so.7 -> libprotobuf.so.7.0.0
libprotobuf-lite.so.7 -> libprotobuf-lite.so.7.0.0
我需要做什么才能被libprotobuf
链接器识别?
编辑:当我尝试直接链接库时,出现此错误:
ldconfig: Ignored file /usr/local/lib/libprotobuf.so since it is not a regular file.
我尝试复制libprotobuf.so.7.0.0
,libprotobuf.so
使其不再是符号链接,这修复了错误,但我的链接器仍然找不到libprotobuf
.
答案1
ld.so.conf
仅由运行时动态链接器使用。ld
我们根本不这样做 - 您需要/usr/local/lib
作为链接器搜索目录传递(ld
如果您直接调用它,则直接传递,或者通过编译器传递)。
对于ld
、GCC(或 clang,可能还有很多其他编译器),您可以使用该-L
标志来执行此操作。