• 12824阅读
  • 9回复

[讨论]Qt没有被正确安装,请运行make install问题的解决 [复制链接]

上一主题 下一主题
离线realfan
 

只看楼主 倒序阅读 楼主  发表于: 2013-02-04
在网上直接下载别人编译好的Qt库,为自己使用省了不少事。但往往也会遇到些问题,其中
Qt version is not properly installed,please run make install
Qt没有被正确安装,请运行make install
这个问题是比较常见的一个。
网上看了一个帖子,终于明白原因所在,原来是qmake.exe是在Qt安装编译时生成的,里面内嵌了Qt相关的一些路径。如果直接拷贝过来使用,自己的路径结构与原来不同,则Qt库就不能正常使用。提示就是

Qt version is not properly installed,please run make install
Qt没有被正确安装,请运行make install
既然路径信息是内嵌在qmake.exe中了,应该是没法通过修改配置的方式解决这个问题了。只能对qmake.exe下手了。
(修改前,别忘了先备份一下哦)
用16进制编译器,打开qmake.exe文件,搜索
71 74 5f 70 72 66 78 70 61 74 68 3d
qt_prfxpath  =)



看到了吧,这里有C:/QT/5.0.1-rel-static,说明编译安装是在这个目录的。要把这段内容改成我们要用的目录才行。比如改成D:/QT/5.0.1-rel-static。注意一点,修改路径时,新路径比原来路径长,长出的部分,是覆盖后面的00,如果比原来短,要把短的部分改成00.就是不要改变原文件大小,否则会出错
是不是改完就OK了呢?别急,会不会还有其它地方也记录了路径信息呢?查找43 3a 2f 51 54 2f 35 2e 30 2e 31 2d 72 65 6c 2d 73 74 61 74 69 63  (C:/QT/5.0.1-rel-static),发现一共有17处路径,依次修改,保存。再试试,问题解决啦。

qt_prfxpath=C:/QT/5.0.1-rel-static
qt_docspath=C:/QT/5.0.1-rel-static/doc
qt_hdrspath=C:/QT/5.0.1-rel-static/include
qt_libspath=C:/QT/5.0.1-rel-static/lib
qt_lbexpath=C:/QT/5.0.1-rel-static/libexec
qt_binspath=C:/QT/5.0.1-rel-static/bin
qt_plugpath=C:/QT/5.0.1-rel-static/plugins
qt_impspath=C:/QT/5.0.1-rel-static/imports
qt_qml2path=C:/QT/5.0.1-rel-static/qml
qt_adatpath=C:/QT/5.0.1-rel-static
qt_datapath=C:/QT/5.0.1-rel-static
qt_trnspath=C:/QT/5.0.1-rel-static/translations
qt_xmplpath=C:/QT/5.0.1-rel-static/examples
qt_tstspath=C:/QT/5.0.1-rel-static/tests
qt_hpfxpath=C:/QT/5.0.1-rel-static
qt_hbinpath=C:/QT/5.0.1-rel-static/bin
qt_hdatpath=C:/QT/5.0.1-rel-static


手工改有时也挺麻烦的,做了一个小工具,自动搞定。
http://pan.baidu.com/share/link?shareid=308319&uk=673227135


最后感谢一下我参考帖子作者,帖子链接如下
http://blog.csdn.net/jiangcaiyang123/article/details/8301535
===========================================================================
roywillow的提醒下,试了qt.conf,果然更方便的解决了问题,不需要这种暴力修改方式了。
具体方法,在qmake.exe同一文件夹下,创建一个qt.conf文件(ANSI格式)
内容为
[paths]
Prefix = D:/Qt/5.0.1-rel-static
(路径根据实际情况设)
问题解决。注意,编码一定要ANSI格式,不能用UTF-8。路径分隔符要"/"或"\\"
离线dbzhang800

只看该作者 1楼 发表于: 2013-02-04

这些路径是在configure的时候生成的。编译时会直接包含在qmake 和 QtCore.lib 中,通过安装程序安装Qt库时,最后一步就是对二进制文件中的路径执行的这种patch操作(包括调试信息中的路径 比如msvc调试需要的那些.pdb文件等)
离线realfan

只看该作者 2楼 发表于: 2013-02-04
回 1楼(dbzhang800) 的帖子
原来如此,谢谢指教!
我写了个工具,patch qmake.exe中的路径。
QtCore.lib中的路径需要改吗?
我目前只改了qmake.exe,测试,还没发现问题。
离线roywillow

只看该作者 3楼 发表于: 2013-02-05
通过写qt.conf文件不能解决吗
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线realfan

只看该作者 4楼 发表于: 2013-02-05
回 3楼(roywillow) 的帖子
能否具体点
离线roywillow

只看该作者 5楼 发表于: 2013-02-05
回 4楼(realfan) 的帖子
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线realfan

只看该作者 6楼 发表于: 2013-02-05
回 5楼(roywillow) 的帖子
qt.conf是程序编译时用的吧
如果路径不对,在QtCreator中添加Qt版本时,就提示不对了。把qmake.exe改一下才行。
libQt5Core.a中有14处路径信息,不过这个不改好象就不影响使用。
离线roywillow

只看该作者 7楼 发表于: 2013-02-07
回 6楼(realfan) 的帖子
刚才测试了一下
通过qt.conf,creator添加完qmake,下面的详情中的各种路径都被qt.conf覆盖了,所以编译的时候应该没问题
至于运行的时候,刚重装系统手头没编译器可测试,可能需要给这个程序再提供一个qt.conf?
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线realfan

只看该作者 8楼 发表于: 2013-02-07
回 7楼(roywillow) 的帖子
把你的qt.conf分享一下吧
离线realfan

只看该作者 9楼 发表于: 2013-02-07
回 7楼(roywillow) 的帖子
试了一下,果然可以解决问题。不用暴力修改qmake.exe了。真是太好了
快速回复
限100 字节
 
上一个 下一个