我使用的是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似乎也没有链接我的库
任何人都可以告诉我为什么这不起作用?谢谢
答案 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/