2012-05-12 86 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的最新版本中发生了一些变化,因此您必须检查链接的路径。

相关问题