2015-09-11 43 views
0

我的應用需要加載硬件製造商提供的dylib。在dylib使用otool產生這樣的輸出:install_name_tool不作任何更改?

$otool -L harwdware.2.dylib 
hardware.2.dylib: 
    @executable_path/../Addittional/hardware.2.dylib (compatibility version 3.0.0, current version 3.0.0) 
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1213.0.0) 
    /System/Library/Frameworks/IOKit.framework/Versions/A/IOKit (compatibility version 1.0.0, current version 275.0.0) 
    /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 1153.18.0) 
    /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 120.0.0) 

而且我想改變@executable_path /../ Addittional/@executable_path /../框架/這其實是較短,所以它應該適合。 但是當我運行:

install_name_tool -change @executable_path/../Addittional/hardware.2.dylib @executable_path/../Frameworks/hardware.2.dylib hardware.2.dylib 

則什麼也不會發生,沒有什麼變化,並從otool輸出和以前一樣。

我哪裏錯了?

+0

'-change'用於改變到從屬庫的引用。 '-id'可能是你想要的。 – trojanfoe

+0

嘿@trojanfoe工作!謝謝您的幫助。 – Kenny

回答

0

由於@trojanfoe正確的命令行是:

install_name_tool -id "@executable_path/../Frameworks/hardware.2.dylib" hardware.2.dylib