[英]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
前面加上名稱,默認情況下追加 .so
, libX.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.