繁体   English   中英

无法在qt creator(linux)上链接共享库

[英]Cannot link shared library on qt creator (linux)

这是我的.pro文件:

TEMPLATE = app
CONFIG += console
CONFIG -= app_bundle
CONFIG -= qt

DEPENDPATH += /home/khajak/CList/linker
INCLUDEPATH += /home/khajak/CList/linker

LIBS += -L/home/khajak/CList/linker -llibCListManager
LIBS += -L/home/khajak/CList/linker -llibCommandLineEngine

这是/home/khajak/CList/linker目录:

lrwxrwxrwx 1 khajak khajak     24 Mar 30 23:10 libCListManager.so -> libCListManager.so.1.0.0
lrwxrwxrwx 1 khajak khajak     24 Mar 30 23:10 libCListManager.so.1 -> libCListManager.so.1.0.0
lrwxrwxrwx 1 khajak khajak     24 Mar 30 23:10 libCListManager.so.1.0 -> libCListManager.so.1.0.0
-rwxrwxr-x 1 khajak khajak 344109 Mar 30 22:37 libCListManager.so.1.0.0
lrwxrwxrwx 1 khajak khajak     29 Mar 30 23:10 libCommandLineEngine.so -> libCommandLineEngine.so.1.0.0
lrwxrwxrwx 1 khajak khajak     29 Mar 30 23:10 libCommandLineEngine.so.1 -> libCommandLineEngine.so.1.0.0
lrwxrwxrwx 1 khajak khajak     29 Mar 30 23:10 libCommandLineEngine.so.1.0 -> libCommandLineEngine.so.1.0.0
-rwxrwxr-x 1 khajak khajak 207537 Mar 30 18:24 libCommandLineEngine.so.1.0.0
-rw-rw-r-- 1 khajak khajak    285 Mar 30 23:15 linker.pro

Qtcreator抛出一个错误:

:-1: error: cannot find -llibCListManager
:-1: error: cannot find -llibCommandLineEngine

引用man ld

  -l namespec --library=namespec<br> 

namespec指定的存档或目标文件添加到要链接的文件列表中。 此选项可以使用任意次。 如果namespec的格式为:filenameld将在库路径中搜索名为filename ,否则它将在库路径中搜索名为libnamespec.a的文件。

在支持共享库的系统上, ld也可以搜索libnamespec.a.以外的文件libnamespec.a. 具体来说,在ELF和SunOS系统,劳工处会搜索目录中一个名为库libnamespec.so寻找一个叫前libnamespec.a (按照惯例,“。so”扩展名表示共享库。)请注意,此行为不适用于:filename ,它始终指定名为filename

因此, -llibCListManager意味着您要链接名为liblibCListManager.so的库。 对于libCListManager.so ,正确的选项是-lCListManager

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM