首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么macdeployqt会给出“无法打开输入文件”的错误?

为什么macdeployqt会给出“无法打开输入文件”的错误?
EN

Stack Overflow用户
提问于 2012-05-12 11:23:52
回答 3查看 1.6K关注 0票数 1

当我在我的.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

代码语言:javascript
复制
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"
EN

回答 3

Stack Overflow用户

发布于 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版本,它可以工作:

代码语言:javascript
复制
$ qmake -version
QMake version 2.01a
Using Qt version 4.6.3 in /Library/Frameworks
票数 0
EN

Stack Overflow用户

发布于 2014-01-26 15:16:05

我认为在macdeployqt中存在权限问题。我使用sudo解决了这个问题:

代码语言:javascript
复制
sudo -s -- 'macdeployqt myapp.app; chown -R $(USER) myapp.app'
票数 0
EN

Stack Overflow用户

发布于 2014-01-26 18:42:27

从您的错误消息可以看出,您正在使用的libcrypto链接到了本地文件系统上的libz。您需要做的是确保包的框架目录中有libz的副本,然后使用install_name_tool将路径更改为包中的版本。

代码语言:javascript
复制
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的更改出现了一些问题,因此您必须检查链接路径。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10560811

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档