簡體   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