GCC(鏈接)是否在用絕對路徑指定時找不到庫。請注意,我想要這樣做的原因是我有一個構建系統,可以通過絕對路徑解決所有庫問題,因此它可以保留一組有序的唯一條目。指定具有絕對路徑的庫的GCC行爲是什麼
g++ (...) -l/path/to/library.so
我看到一個bug報告,其中有些人認爲這是一個錯誤,和其他人認爲它曾經工作過的事實是一個錯誤,這是固定的。
有一些討論,一個曾與一個先於道「:」
反正沒能正常工作。
因此,爲了在構建系統中進行測試,我將代碼放在絕對庫路徑中,如果它的「前綴」與指定給GCC的任何庫路徑匹配並截斷絕對庫路徑。
g++ (...) -L/path/to -llibrary.so
這工作。
我也試過這個。
g++ (...) -L/path/to -l/path/to/library.so
它工作。 9(雖然調查..看起來像這是在構建腳本中的錯誤)
似乎如果任何指定爲GCC的搜索路徑是指定一個絕對路徑的庫的「前綴」,它會找到該庫。我還假定它需要在提供的庫路徑的有序列表中的第一個命中。
所以我的問題。
- 這種支持行爲?
- 這是更好的截斷構建腳本中的絕對庫路徑或通過絕對路徑。
我啓事帶來了一些相關的問題在這裏:
這表明「非搜索」完整路徑是「燒」到可執行從而覆蓋所有運行時庫路徑當它是執行?它是否正確 ?如果是這樣,則意味着在命令行上指定具有完整路徑的庫是不合適的。部署時,構建的應用程序和關聯的庫將安裝在標準的可搜索位置。
這意味着它將通過查看後綴來確定它是一個庫嗎? – peterk
@peterk:不,Unix通常不支持文件。它將通過查看文件的結構來確定它是一個庫。 –
@MartinBonner GCC不會自動查找相應的存根'.a'文件嗎? – user0042