簡體   English   中英

linux上的鏈接問題(找不到適當的庫的名稱)

[英]linking problem on linux (can't find the name of the appropriate library)

我嘗試使用庫(http://code.google.com/p/qxmpp/),但是找不到鏈接到的庫的名稱。 我想了解您如何找出要在鏈接參數中使用的庫的名稱。

看起來這只是一個源歸檔文件-不包含二進制文件。 您是否從中建立了圖書館? 構建過程放在哪里? 通常會懷疑/usr/lib/usr/local/lib ,但是請閱讀軟件包中的構建和安裝文檔。

假設該庫的名稱為libqxmpp.a並且(如您在注釋中所提到的)它位於通常的lib目錄( /usr/lib )中,則可以輕松推斷出適當的選項:

gcc和其他編譯器具有-l開關,可根據您提供的名稱查找該庫。 默認情況下,它將在構建時查找給GCC的路徑(通常是/lib/usr/lib )以及給/etc/ld.so.conf任何其他/etc/ld.so.conf 如果添加開關-lX ,它將在lib 前面加上名稱,默認情況下追加 .solibX.so在它知道的任何lib目錄中查找任何類似於libX.so文件。

往后看,我們可以推斷出使用-lqxmpp調用gcc將查找名為libqxmpp.so的文件(實際上,它libqxmpp.so查找其他名稱)。如何獲取它來查找.a文件? 這些ar chives( man ar )是靜態庫,因此在庫之前傳遞-static開關:

gcc -o progname your.o program.o files.o -static -lqxmpp

(如果您需要鏈接到其他庫,則可能需要為它們添加-Wl,-dynamic ,如果您不希望它們靜態鏈接或靜態庫不可用。)

或者,如果您知道完整路徑,則可以執行以下操作:

gcc -o progname your.o program.o files.o /usr/lib/libqxmpp.a

...而且工作原理相同。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM