使用install_name_tool在您的dylib中使用相對路徑。這樣,您可以將它們設置一次,並在任何地方安裝該目錄,而無需在安裝時修改您的庫。
您應該將所有的dylib依賴關係放入一個文件夾,然後使用install_name_tool來設置您所依賴的其他dylib的相對位置。假設你的庫libmyfoo.dylib取決於libbar.dylib:
install_name_tool -change "/Whatever/full/path/libbar.dylib" "@loader_path/libbar.dylib" libmyfoo.dylib
這樣,你的圖書館總是會libbar.dylib在libmyfoo.dylib所在的同一目錄中。
您可能還需要在某些其他dylib上運行install_name_tool(如果它們互相依賴)。
當心,爲install_name_tool的文件指出,「對於這個工具,當安裝名稱或rpaths較大二進制應與LD建工作(1)-headerpad_max_install_names選項。」,所以一定要包括構建庫時的命令行選項-headerpad_max_install_names
。
@loader_path
是相對於用來加載dylib的二進制文件,在這種情況下是您的libmyfoo.dylib。如果您想查找與啓動庫加載順序的可執行文件相關的庫,請使用@executable_path
。
請注意,這是一個自動接受的賞金答案。據推測,這實際上並沒有解決提問者的問題。 – 2010-02-03 22:02:16