1
當我想編譯使用動態庫的程序時,是否必須安裝(即複製到特定位置,比如/ usr/share/lib)這個庫?或者可以,如果我把這個庫放在任何地方,然後在鏈接過程中我將鏈接器指向它,例如'-L ./thelibfolder'?使用動態庫
當我想編譯使用動態庫的程序時,是否必須安裝(即複製到特定位置,比如/ usr/share/lib)這個庫?或者可以,如果我把這個庫放在任何地方,然後在鏈接過程中我將鏈接器指向它,例如'-L ./thelibfolder'?使用動態庫
我必須安裝(即複製到特定位置,比如/ usr/share/lib)這個庫嗎?
號
對於UNIX共享庫,你需要兩件事情安排:
-L/path/to/directory -lfoo
鏈接標誌添加到鏈接線來實現的。/path/to/directory
。這是系統特定的。在很多系統上,設置LD_LIBRARY_PATH
環境變量可以達到所需的結果,但這通常不是首選的方法。另一種方法是將此路徑編碼到應用本身,例如,在Linux上,可以將-Wl,-rpath=/path/to/directory
添加到應用程序鏈接行。
謝謝你的回覆!我遇到的問題是鏈接器找不到庫 - 我在這裏問了一下: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