2016-07-18 82 views
0

我試圖將新的dylib鏈接到我的可執行文件,但它將其鏈接到絕對路徑(/usr/local/lib/)如何從使用的共享庫中刪除此默認路徑?鏈接新的dylib時刪除默認的搜索路徑。

otool -L ../Build/Products/Debug/myexec 

../Build/Products/Debug/myexec: 
/usr/local/lib/libmylib.dylib (compatibility version 1.0.0, current version 1.0.0) 

回答

1

在OS X上,install_name_tool命令可以更改動態鏈接庫。

  • -change old new binary選項將更改一個或多個庫的位置。
  • -rpath old new binary將重置rpath到一個新的。
  • -delete_rpath old binary將刪除當前的一個。
  • -add_rpath new binary將添加一個新路徑。

然而,也有可能是一個小麻煩:看來這CMD行工具只能設置二進制的rpath,而不是系統rpath的,這樣/usr/local/lib不能-delete_rpath選項刪除。

在這種情況下,唯一的選擇是-change old new

要檢查的是rpath:

$ otool -l that_exec |grep -C 5 LC_RPATH 
     cmd LC_DATA_IN_CODE 
    cmdsize 16 
    dataoff 13152 
datasize 0 
Load command 40 
      cmd LC_RPATH 
     cmdsize 32 
     path /the_binarys_rpath/here (offset 12)