此共享库(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(sym link)
> libdatelib_release.so.1(sym link)
> libdatelib_release.so.1.0(sym link)
> libdatelib_release.so.1.0.0(共享库)
我可能不得不问另一个问题来解释为什么有这么多的符号链接(重点是什么?),以及为什么我不能直接链接到共享库,但必须通过符号链接.我已经阅读了一些在线文档,但到目前为止我看到的似乎更像是格言/传统而不是实际的技术原因为什么在Linux上链接时需要这种抽象级别.
就像是:
ln -s /the/path/to/the/libthing.so.1.0.0 /the/path/to/the/libthing.so
现在 – 一切都会奏效.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。