ldconfig未看到自定义库 我们使用了从一些C++代码中创建了一个自定义共享库 g++ -c -fPIC customTest.cpp g++ -shared -o libcustomTest.so customTest.o
我们把它放在项目目录中,在我们的makefile中,我们的默认目标是ldconfig未看到自定义库 我们使用了从一些C++代码中创建了一个自定义共享库 g++ -c -fPIC customTest.cpp g++ -shared -o libcustomTest.so customTest.o,c++,linker,shared,ubuntu-11.10,C++,Linker,Shared,Ubuntu 11.10,我们把它放在项目目录中,在我们的makefile中,我们的默认目标是 main: main.o nvcc $^ -o main -lcustomTest -L. 这个很好用 问题是,我们想将我们的库移动到/usr/lib/或任何任意文件夹,但程序仍能找到它并使用它,但这并没有像我们希望的那样发生 我们在根目录中创建了一个名为libTest的文件夹,并将库customTest.so.0.1放在该文件夹中。然后我们在/etc/中编辑了ld.so.conf,以便在其中包含/libTest 然
main: main.o
nvcc $^ -o main -lcustomTest -L.
这个很好用
问题是,我们想将我们的库移动到/usr/lib/
或任何任意文件夹,但程序仍能找到它并使用它,但这并没有像我们希望的那样发生
我们在根目录中创建了一个名为libTest
的文件夹,并将库customTest.so.0.1
放在该文件夹中。然后我们在/etc/
中编辑了ld.so.conf
,以便在其中包含/libTest
然后我们转到程序文件目录并运行
ldconfig-v
看起来像这样,但更大
libpanel.so.5 -> libpanel.so.5.9
libt1.so.5 -> libt1.so.5.1.2
libbluetooth.so.3 -> libbluetooth.so.3.11.4
libgck-1.so.0 -> libgck-1.so.0.0.0
libdca.so.0 -> libdca.so.0.0.0
创建了很多链接,但是libcustomTest。所以不是其中之一。毫不奇怪,当我们运行make时,无法找到自定义库
有人能指出我们做错了什么吗?顺便说一下,我们在Ubuntu 11.10上
g++-shared-o libcustomTest.so customTest.o
这将创建一个未设置SONAME
的共享库
我们在根目录中创建了一个名为libTest的文件夹,并将库customTest.so.0.1放在该文件夹中
不要那样做。只需将libcustomTest.so复制到/libTest中,就可以使用它了
创建了很多链接,但libcustomTest.so不是其中之一
这是预期的结果ldconfig
创建从SONAME
到实际实现二进制文件的符号链接。由于您没有设置SONAME
,因此没有符号链接
除非您了解SONAME
的用途,否则也不要麻烦设置它(通过-Wl,--SONAME=…
标志)。在Linux上,SONAME
和外部库版本控制通常是错误的答案,因为符号版本控制提供了更好的方法