当我在我的.app上运行macdeployqt时,它可以添加库,但当您尝试启动它时,它会使应用程序崩溃。这在MacOSX10.7上运行得很好,但在MacOSX10.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"发布于 2012-05-12 21:02:44
通过降级到我挂过的旧的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发布于 2014-01-26 15:16:05
我认为在macdeployqt中存在权限问题。我使用sudo解决了这个问题:
sudo -s -- 'macdeployqt myapp.app; chown -R $(USER) myapp.app'发布于 2014-01-26 18:42:27
从您的错误消息可以看出,您正在使用的libcrypto链接到了本地文件系统上的libz。您需要做的是确保包的框架目录中有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的更改出现了一些问题,因此您必须检查链接路径。
https://stackoverflow.com/questions/10560811
复制相似问题