最近剛接觸osx下的開發(fā)瘦锹,遇到一個link的第三方庫始終是絕對路徑的問題捶惜。最后才發(fā)現(xiàn)osx上庫被link的路徑居然是庫自己決定的。解決辦法如下:
otool -L lib_a.dylib # 查看庫的link情況
第一行是庫的安裝路徑缆八,就是這一行導(dǎo)致了程序link路徑變成了絕對值潜秋。修改方法:
install_name_tool -id @executable_path/lib/lib_a.dylib lib_a.dylib
@executable_path是可執(zhí)行文件所在目錄蛔琅,換成相對路徑的關(guān)鍵就在于此。當(dāng)然也可以用@rpath
如果lib_a.dylib中還link了另一個庫峻呛,也是隨程序一起提供的罗售,那么也需要修改。修改方法:
install_name_tool -change /usr/local/bin/lib_b.dylib @executable_path/lib/lib_b.dylib lib_a.dylib
修改完后在用這個庫編譯工程就沒有l(wèi)ink的問題了杀饵。lib_a.dylib和lib_b.dylib發(fā)布的時候復(fù)制到可執(zhí)行文件同目錄的lib下即可莽囤。