使用Make指定工具链编译Qt
简要叙述下过程,避免以后在遇到相似有大致思路
顺序总结:
- 获取工具链
- 下载Qt源码;
- 拷贝qtsrc/qtbase/mkspaces/一份文件夹;
- 用实际使用的工具链名称重新命名上一步拷贝的文件夹;
- 编辑重新命名后文件夹内的qmake.conf文件,使用指定的编译器绝对路径;
- 在qtsrc/下创建一个脚本,关键为脚本中使用-xplatform选项指定使用的特定编译工具。
编译过程碰到的问题
- 之前实在64bit的ubuntu20.04中编译的Qt5.15.2源码,但是一直有报错。解决多次后最后一个错误是一个32bit的库的问题,后来goole,发现确实有版本问题(但咱并不是说64bit不能编译32bit,网上有人成功案例是装32bit库解决,但此次无效),后来多方查询,最后32bit的ubuntu的一个官方正式版本是16.04。后来编译问题基本没有!
特别说明此次,工具链是32bit,系统也是ubuntu16.04 32bit。
1.工具链获取
本次工具链为供应商博研提供,对应板卡为Hi3798。获取工具链后需要在~/.bashrc中加入PATH与LD_LARBARY_PATH。使用source ~/.bashrc生效后,在cmd中使用: 工具链名字 -v 核对是否有效。
2.源码下载
源码有两种方式获取:一是安装QtCreator并选择源码一并安装https://download.qt.io/new_archive/qt/5.5/5.5.1/ ,二是从Qt官方获取:https://download.qt.io/new_archive/qt/ 。本次采取从QtCreator获取源码的方式。但下载Qt版本的时候需要注意,目前QtCreaotr从5.15开始官方不在提供32bit版本,本次下载的是5.5.1 32bit的run包。
3.配置
安装好Qt后,到Qt的安装目录中找到src,并拷贝一份src并进行重新命名,以避免污染源码。到qtsrc/qtbase/mkspaces/随便找一个文件夹进行复制,并且命名为工具链名称,更改复制的文件夹内的qmake.conf内容,如下:
原来内容:
改后内容:
记得保存哦!
再在qtsrc一级目录下建立一个脚本用于配置qtsrc/configure中给的配置项,本次建立了一个名为auto.sh的脚本,其内容如下:
其中的-xplatform:指定使用mkspaces中的那个文件夹,并使用后续文件夹里配置的编译器。建议与工具链名称相同即可。(没测试与工具链名称不同可不可以,猜测可以,但建议和工具链名称相同~);
其中的-prefix:指定make install 安装的路径(本次测试未生效,最后使用的命令是 make install -j 15 PREFIX=/home/mission/lvs/03_Qt/03_qt5.5.1/5.5.1_arm).
4.编译与安装
到此后就是配置configure文件和make的事儿了。
./auto.sh->./configure->make->make install PREFIX
若在第二步./configure时报错,解决错误后,先清除 rm -rf ./config.* 再执行./configure,无误后make加后续。
5.生成后别忘记生成的bin和lib加入环境变量中哦~
加入~/.bashrc
6.把生成的qmake配置到qtcreator中
怎么配置QtCreator网上有很多,这里就不再讲述。
细说下生成的qmake、qtcreator和工具链的关系:
qmake是用工具链生成的,而我们在QtCreator中写的代码也是需要工具链进行编译,原理是应该是qmake使用工具链编译咱们得源码。所以在QtCreaotr中配置是需要先配置编译器再配置Qt版本(即qmake),最后集成到kits中使用。
END
标签:Qt,32bit,Make,qmake,编译,源码,工具 From: https://www.cnblogs.com/lvshen/p/18114150