【QT】Qt多版本交叉编译所遇到的问题以及如何解决(重在思路过程)

问题所述:
在虚拟机Ubuntu中,对qt的代码进行 make 编译的时候报错了:fatal error: sys/cdefs.h: No such file or directory
在这里插入图片描述

问题分析:
目前推测的是:1、qt的版本混乱所导致的 2、可能编译arm的程序时,交叉编译环境没有配置好

1、
首先:
默认版本是 Qt 4.8.7
在这里插入图片描述
arm的版本是Qt 5.12.2 (看红色知道这个配置有点儿问题)
在这里插入图片描述
最后是昨天刚下载的一个 qt5-default ,版本是qt 5.9.5
在这里插入图片描述
提醒:qt-default:是Qt 4.8.7 ;而 qt5-default ,是 Qt 5.9.5 (之前下载时没注意,所以会出现几种库版本)

注意:qtcreator是一个IDE,qt5-default 是一个库。事实上往往分别安装了两个之后都要在 qtcreator 的 tool-option里面设置编译链的位置。编译的时候相当于ide自动帮你调用qmake-make。

问题解决:
第一步,先解决推测的第二种可能,把arm的交叉编译环境给配置好。

先查找arm的交叉编译链

sudo apt-cache search aarch64

在这里插入图片描述
可以通过在命令行输入 aa 加上 Tab 键,查看自己需要的是哪种版本
在这里插入图片描述

然后安装:

sudo apt-get install g++-7-aarch64-linux-gnu
sudo apt-get install gcc-7-aarch64-linux-gnu

在这里插入图片描述
安装完成后,可以去qtcreator上查看:
在这里插入图片描述
然后就发现arm的不报错了(注意:这个arm是之前自己Add的,名字自己起的,为了区分其他版本)
在这里插入图片描述
编译程序,还是缺少了 g++编译器
在这里插入图片描述
查询一下,然后再安装上去(如果也缺少了gcc编译器,也可以一起安装上去):
在这里插入图片描述

sudo apt-get install g++-aarch64-linux-gnu

安装完成后,再去查看qtcreator里面的编译器,这下子补全了:
在这里插入图片描述
/usr/bin 目录下查看它们的关系:
在这里插入图片描述
然后,再去编译程序(先Clean,再 Rebuild的),发现顺利编译成功
在这里插入图片描述
去命令行窗口试一试,发现也是在这里插入图片描述

然后找其中的一个程序运行,报了一个 libstdc++.so.6 共享库找不着:
在这里插入图片描述
那咱们就通过命令行检索一下:

sudo find / -name libstdc++.so.6

在这里插入图片描述
发现了一个小问题,aarch64-linux-gnu 本应该是在/usr/lib 下的,这个位置着实看着不对:

/usr/aarch64-linux-gnu/lib/libstdc++.so.6

然后我先不管。先添加缺少的库(直接在pro文件下指定路径):
在这里插入图片描述
结果发现,还是缺少相应的库,原因是aarch64-linux-gnu 这里面需要的库都没有。

既然如此,那我就干脆尝试把这个aarch64-linux-gnu 直接变换的/usr/lib下,然后再从x86_64-linux-gnu中拷贝需要的库到aarch64-linux-gnu 中。
在这里插入图片描述
或者呢,将原本是aarch64-linux-gnu 下的 lib 文件夹改名为 aarch64-linux-gnu ,再将 aarch64-linux-gnu 移动到 /usr/lib 下(其目的是能保证那些软连接符号拷贝过去都能正常使用):
在这里插入图片描述
然后进入到/usr/lib/aarch64-linux-gnu 目录下,可以将所需要的库文件一个一个从x86_64-linux-gnu里面拷过来:
在这里插入图片描述
后面再运行qt程序即可成功。

其他:

可以查看自己系统的qmake用的是哪种版本:
在这里插入图片描述
如果想要修改默认的qt版本,可以去default.conf下修改:
在这里插入图片描述
将这两行修改为安装qt的目录即可:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Cappuccino-jay

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值