这是我的.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
答案 0 :(得分:2)
引用man ld
-l namespec --library=namespec<br>
将
namespec
指定的存档或目标文件添加到要链接的文件列表中。此选项可以使用任意次。如果namespec
的格式为:filename
,则ld
会在库路径中搜索名为filename
的文件,否则会在库路径中搜索名为{{1}的文件}}。
在支持共享库的系统上,libnamespec.a
也可以搜索ld
以外的文件。具体来说,在ELF和SunOS系统上,ld将在搜索目录之前搜索名为libnamespec.a.
的库。叫libnamespec.so
。 (按照惯例,“。so”扩展名表示共享库。)请注意,此行为不适用于libnamespec.a
,:filename
始终指定名为filename
的文件。
因此,-llibCListManager
表示您想要链接名为liblibCListManager.so
的库。对于libCListManager.so
,正确的选项是-lCListManager
。