[英]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
的格式為:filename
,ld
將在庫路徑中搜索名為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.