为什么ldconfig不链接或缓存我的库?

时间:2019-06-08 18:11:27

标签: gcc linker shared-libraries ubuntu-18.04

我使用的是Ubuntu 18.04,GCC 7.4

我创建了一个测试共享库,然后将其复制到/ usr / local / lib / .so文件的创建如下:

gcc -Wall -fPIC -c src/Test.cpp -o obj/Test.o
gcc -shared -Wl,-soname,libhztest.so -o bin/libhztest.so obj/*.o
sudo cp bin/libhztest.so /usr/local/lib/hazeltest/
sudo chmod 777 /usr/local/lib/hazeltest/

然后我创建了一个测试应用程序并尝试运行它,我得到了: 加载共享库时出错:libhztest.so:无法打开共享库文件:没有这样的文件或目录

如果我确实导出了正确的LD_LIBRARY_PATH并且可以正常工作,但我更喜欢使用ldconfig

不幸的是,即使/etc/ld.so.conf中包含目录/ usr / local / lib /,ldconfig似乎也没有链接我的库

任何人都可以告诉我为什么这不起作用?谢谢

2 个答案:

答案 0 :(得分:1)

您需要将其复制到/usr/local/lib/,而不是/usr/local/lib/hazeltest/。您可以将/usr/local/lib/hazeltest/添加到/etc/ld.so.conf中。 (尽管我认为您应该将此内容添加到/etc/ld.so.conf.d/中的新文件中,例如/etc/ld.so.conf.d/hazeltest.conf,这样您才可以直接修改ld.so.conf,而这可能是自动生成的文件)。

答案 1 :(得分:0)

我终于通过命令运行它了:

sudo ldconfig /usr/local/lib/hazeltest/