我正在使用Qmake在Ubuntu 9.10上构建一个共享库。
这个共享库(A)依赖于另一个共享库(B)。
项目B已经成功构建。
在项目A的.pro文件中,我的LIBS变量如下所示:
LIBS += -L../datelib/bin -llibdatelib_release.so.1.0.0
我使用完整的shlib名称,因为库版本不同。
无论如何,当我尝试构建A项目时,在链接阶段会出现错误,并打印以下错误消息:
/usr/bin/ld: cannot find -llibdatelib_release.so.1.0.0
collect2: ld returned 1 exit status
make[1]: ***[bin/libprojecta_release.so.6.0.0] Error 1
make ***[release] Error 2
Exited with code 2
从错误信息来看,我认为ld在抱怨无法找到libdatelib文件,因此我手动将其复制到了/usr/lib/目录下。然而,这并没有解决问题,我仍然收到相同的错误信息。有人知道如何修复这个问题吗?
[编辑]
我对使用gcc进行构建还很新。我知道如何创建符号链接,但我应该为lnk指令使用哪些路径?我想要链接的文件位于/home/username/work/cppdev/datelib/bin 目录下。此外,我使用的构建系统(qmake)会自动在构建过程中创建符号链接,因此我已经在/home/username/work/cppdev/datelib/bin文件夹中拥有以下文件:
- libdatelib_release.so (符号链接) - libdatelib_release.so.1 (符号链接) - libdatelib_release.so.1.0 (符号链接) - libdatelib_release.so.1.0.0 (共享库)
我可能不得不问另一个问题来解释为什么有这么多符号链接(有什么意义?),以及为什么我不能直接链接到共享库,而必须通过符号链接进行操作。我已经阅读了一些在线文档,但迄今为止我所看到的似乎更像是规定/传统,而不是Linux链接时所需的实际技术原因。