当我在.app上运行macdeployqt
时,它会将库添加好,但是当您尝试启动它时会使应用程序崩溃。这在Mac OS X 10.7上工作正常,但在Mac OS X 10.8 DP3上没有任何乐趣。要安装Qt,我使用了port install qt4-mac
(但是,我可能在Qt网站上的10.7机器上有一个更旧版本的Qt。)
命令:macdeployqt bin/Synergy.app -verbose=3
Enite log: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 :(得分: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
答案 1 :(得分:0)
我认为macdeployqt中存在权限问题。 我用sudo解决了:
sudo -s -- 'macdeployqt myapp.app; chown -R $(USER) myapp.app'
答案 2 :(得分: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
如果你的二进制文件链接到丢失的库,通常会导致崩溃。
macdeployqt
更改了Qt的最后几个版本时出现了一些问题,因此您必须检查链接路径。