2013-02-22 60 views
1

當我想編譯使用動態庫的程序時,是否必須安裝(即複製到特定位置,比如/ usr/share/lib)這個庫?或者可以,如果我把這個庫放在任何地方,然後在鏈接過程中我將鏈接器指向它,例如'-L ./thelibfolder'?使用動態庫

回答

0

我必須安裝(即複製到特定位置,比如/ usr/share/lib)這個庫嗎?

對於UNIX共享庫,你需要兩件事情安排:

  • 你必須要知道的靜態鏈接庫,同時連接主要的可執行文件。通常這是通過將-L/path/to/directory -lfoo鏈接標誌添加到鏈接線來實現的。
  • 您還必須使運行程序加載器搜索/path/to/directory。這是系統特定的。在很多系統上,設置LD_LIBRARY_PATH環境變量可以達到所需的結果,但這通常不是首選的方法。另一種方法是將此路徑編碼到應用本身,例如,在Linux上,可以將-Wl,-rpath=/path/to/directory添加到應用程序鏈接行。
+0

謝謝你的回覆!我遇到的問題是鏈接器找不到庫 - 我在這裏問了一下:http://stackoverflow.com/questions/15007309/embedding-python-3-3,然後我想確認是否真的需要安裝Python 3.3。我嘗試了你提到的兩個選項('DYLD_LIBRARY_PATH =「。」gcc embed.c -I./include -L。-lpython33'和'gcc embed.c -I./include -rpath =。-L。-lpython33' - gcc不能識別'-Wl'開關),但它仍然不起作用。請你知道爲什麼它沒有鏈接? – 2013-02-23 13:58:26