請原諒我,如果我失去了一些東西很明顯這裏。我正在爲另一個平臺開發一些應用程序,我所有的專有庫都安裝到/ app/lib。爲了實現這一點,我將每個二進制文件的運行時庫路徑指定爲「/ app/lib」。這工作正常;然而,它需要鏈接時(即使該目錄爲空),我的構建環境中存在路徑「/ app/lib」。我使用的是NetBeans,這可能會讓事情變得複雜,但我可以看到「-Wl,-rpath/app/lib」被傳遞給gcc。RPATH必須存在在編譯時
我想避免需要創建一個空的「/應用程序/ lib目錄」在我的編譯環境,但我不想改變我的目標平臺上的文件結構。如果我從構建環境中刪除/ app/lib,則在構建它時無法找到該錯誤。有沒有辦法指定一個運行時搜索路徑,而不需要它在鏈接時存在?
'-Wl,-rpath /應用/ lib'是一個不正確的選項規範,應該是'-Wl,-rpath -Wl,/應用/ lib'(也許還有其他的方式,但這個工程並沒有需要構建主機上的目錄)。你在這裏錯誤地複製了你的構建選項嗎? – Mat 2012-04-03 15:18:56
我回去複查了,但是我確認這個調用正在構建爲「gcc -o ... -Wl,-rpath/app/lib ...」。 NetBeans正在構建這個makefile,所以如果它是無效的,它可能需要修復它們的結尾。然而,如果/ build/lib存在於我的構建環境中,構建過程會成功,並且生成的二進制文件在運行時使用該路徑。 – LousyG 2012-04-03 15:28:18
奇怪......我雖然沒有工作。我稍後會看到我是否可以複製,看起來有點奇怪。 – Mat 2012-04-03 15:45:52