1

当我macdeployqt在我的 .app 上运行时,它会添加库,但是当您尝试启动它时会使应用程序崩溃。这在 Mac OS X 10.7 上运行良好,但在 Mac OS X 10.8 DP3 上没有任何乐趣。要安装我使用过的 Qt port install qt4-mac(但是,我的 10.7 机器上可能有来自 Qt 网站的更旧版本的 Qt)。

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

启动日志: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"
4

3 回答 3

0

从您的错误消息看来,您使用的 libcrypto 似乎链接到本地​​文件系统上的 libz。您需要做的是确保在您的包的 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

如果您的二进制文件链接到缺少的库,通常会导致崩溃。

更改 Qt 的最后几个版本时存在一些问题,macdeployqt因此您必须检查链接路径。

于 2014-01-26T10:42:26.967 回答
0

通过降级到我一直闲逛的旧 Qt SDK .dmg (qt-sdk-mac-opensource-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
于 2012-05-12T13:02:43.750 回答
0

我认为 macdeployqt 中存在特权问题。我通过使用 sudo 解决了:

sudo -s -- 'macdeployqt myapp.app; chown -R $(USER) myapp.app'
于 2014-01-26T07:16:04.540 回答