qtcreator 编译时出现arm-none-linux-gnueabi-g++: Command not found

时间:2021-03-29 09:11:22

情景复原

情况是这样的,我以前用源码在qmake.conf中修改的编译器是arm-none-linux-g++,编译好arm版的qt并安装到指定目录后,修改qtcreator的qmake为我编译出来的arm版的qmake,这个可以正常编译程序。
后来又用buildroot编译了一个qt,编译器也是用的buildroot编译出来的,然后也修改qtcreator的qmake为当前的buildroot编译出的,也正常使用,后来我把buildroot清除后没有qmake了,就想着用我源码编译的qmake应该也一样可以,可以问题来了,老是出现下面的错误:

:-1: error: arm-none-linux-gnueabi-g++: Command not found

无论我在qtcreator里如何切换编译器都没用。如下
qtcreator  编译时出现arm-none-linux-gnueabi-g++: Command not found

它始终是用的arm-none-linux-g++

在项目的环境配置里看路径也没错
qtcreator  编译时出现arm-none-linux-gnueabi-g++: Command not found

跑到项目下去看makefile发现

####### Compiler, tools and options

CC = arm-none-linux-gnueabi-gcc
CXX = arm-none-linux-gnueabi-g++

分析解决

makefile是由qmake产生的,可是qtcreator当选定了qmake后,编译用的cc编译器名字是由你选定的qmake决定了的,qtcreator里更改compilers只能影响build environment里的PATH路径,无法影响qmake在生成makefile时赋值给CC等,我试着直接更改makefile里的CC CXX是可行的,但不可能每一个项目都手动改吧,
那么究竟是谁影响了qmake生成makefile呢?凶手就是你安装的arm版qt里的qmake.conf决定的,比如我的qmake用到的配置就是如下

/usr/local/Qt5.6-arm/mkspecs/linux-arm-gnueabi-g++/qmake.conf

可以到里边把编译器名字改改就行了。为了验证是否是它,我更改了下如下:

qtcreator  编译时出现arm-none-linux-gnueabi-g++: Command not found

因为有时触摸库没有,所以要手动加入,再看项目的makefile文件
qtcreator  编译时出现arm-none-linux-gnueabi-g++: Command not found
确实也变了。

其实在使用源码编译qt时,我们就用到了这个配置文件,当时我用的是arm-none-linux-gnueabi-gcc,但buildroot里用的是arm-buildroot-linux-gnueabi-gcc,所以两者不通用。
也就是说即使都是arm版,但不同配置弄出来的qmake也不通用。
这样子难不成我每换一次板子,即使是同样的arm架构,如果一个是arm9,一个是coterx a9,会不会也要重新编译一次qt?因为明显qmake.conf里也要这些参数调整。。感觉好麻烦。是不是有更有效的法子??