14

我遇到了共享库和 gcc 的问题。起初我无法运行我编译的程序,因为我收到以下错误:加载共享库时出现 gcc 错误。

我做了一些搜索,发现这是因为找不到共享库。但是我已经确定共享库位于 /usr/local/lib 中,AFAICT 是共享库的常用目录,应该从一开始就可以使用。

我读到您可以设置 LD_LIBRARY_PATH,这对我有用。但是我不想在每次我想运行我的程序时都设置这个。

进一步搜索建议编辑ld.so.conf。当我查看它时,它具有以下内容:

include /etc/ld.so.conf.d/*.conf

查看 ld.so.conf.d 目录会显示一系列文件,包括 libc.conf。这个文件里面有以下内容:

/usr/local/lib

所以我的问题是,当 ld.so.conf 似乎使用包含 /usr/local/lib 的 libc.conf 时,为什么我需要手动设置 LD_LIBRARY_PATH?

这里有什么我必须先配置的东西吗?编译时是否有我缺少的选项?

我应该注意,要编译,我必须指定库的路径,我不知道这是我的问题还是正常行为的症状。

我还应该注意到,当我在其他系统上部署我的软件时,这对我来说是一个问题。我原以为我应该能够将 .so 放在适当的位置并安装我的程序而不会弄乱 ld.so.conf。

我希望这是这个问题的适当论坛,我阅读了常见问题解答,我认为没关系。

干杯。

4

1 回答 1

18

You should run ldconfig (as root) after every change of the directories configured via /etc/ld.so.conf or under /etc/ld.so.conf.d/, in particular in your case after every update inside /usr/local/lib (e.g. after every addition or update of some shared libraries there).

于 2012-09-02T09:10:32.313 回答