2012-05-12 85 views
0

當我在我的.app上運行macdeployqt時,它添加了庫文件,但是當您嘗試啓動它時會導致應用程序崩潰。這適用於Mac OS X 10.7,但在Mac OS X 10.8 DP3上沒有任何喜悅。要安裝Qt,我已經使用了port install qt4-mac(但是,我可能會在Qt網站的10.7機器上安裝Qt的舊版本)。爲什麼macdeployqt給出錯誤「無法打開輸入文件」?

命令:macdeployqt bin/Synergy.app -verbose=3

Enite日誌:http://pastebin.com/i37vadB7

Log: Using install_name_tool: 
Log: in "bin/Synergy.app/Contents/Frameworks//libcrypto.1.0.0.dylib" 
Log: change reference "/opt/local/lib/libz.1.dylib" 
Log: to "@executable_path/../Frameworks/libz.1.dylib" 
ERROR: "install_name_tool: can't open input file: bin/Synergy.app/Contents/Frameworks//libcrypto.1.0.0.dylib for writing (Permission denied) 
install_name_tool: can't lseek to offset: 0 in file: bin/Synergy.app/Contents/Frameworks//libcrypto.1.0.0.dylib for writing (Bad file descriptor) 
install_name_tool: can't write new headers in file: bin/Synergy.app/Contents/Frameworks//libcrypto.1.0.0.dylib (Bad file descriptor) 
install_name_tool: can't close written on input file: bin/Synergy.app/Contents/Frameworks//libcrypto.1.0.0.dylib (Bad file descriptor) 
" 
ERROR: "" 
Log: 
Log: Deploying plugins from "/opt/local/plugins" 
Log: Created configuration file: "bin/Synergy.app/Contents/Resources/qt.conf" 
Log: This file sets the plugin search path to "bin/Synergy.app/Contents/PlugIns" 

回答

0

被降級到舊的Qt SDK的.dmg我遊逛(QT-SDK-MAC-開源-2010.03.dmg)解決。我也運行sudo port uninstall qt4-mac刪除新的SDK。

所以看起來像最新版本的Qt有一個破損的macdeployqt應用程序。

因此,這裏的Qt的版本我現在有,它的工作原理:

$ qmake -version 
QMake version 2.01a 
Using Qt version 4.6.3 in /Library/Frameworks 
0

我覺得這是一種特權問題macdeployqt。 我解決了使用sudo:

sudo -s -- 'macdeployqt myapp.app; chown -R $(USER) myapp.app' 
+0

不適合我 –

0

從你的錯誤消息,似乎你正在使用的libcrypto鏈接到libz進行本地文件系統上。你需要做的是確保你的bundle的Frameworks目錄中有一個libz的副本,然後使用install_name_tool將路徑更改爲捆綁中的版本。

install_name_tool -change /opt/local/lib/libz.1.dylib @executable_path/../Frameworks/libz.1.dylib bin/Synergy.app/Contents/Frameworks//libcrypto.1.0.0.dylib 

如果您的二進制文件鏈接到缺少的庫,它通常會導致崩潰。

macdeployqt在Qt的最新版本中發生了一些變化,因此您必須檢查鏈接的路徑。

相關問題