ldconfig未看到自定义库 我们使用了从一些C++代码中创建了一个自定义共享库 g++ -c -fPIC customTest.cpp g++ -shared -o libcustomTest.so customTest.o

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 然

我们把它放在项目目录中,在我们的makefile中,我们的默认目标是

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
和外部库版本控制通常是错误的答案,因为符号版本控制提供了更好的方法