系统环境:
- Ubuntu 18.04
- buildroot 根文件系统
- Qt creator 5.12.0
开发环境创建
使用 ubuntu作为操作系统环境。使用Buildroot生成根文件系统,在buildroot中可以直接把QT相关库编译进根文件系统中。这样直接搭建好嵌入式开发环境,而不需要另外再分别编译根文件系统,QT库,QT组件等事项。
主机开发环境
由于环境已经搭建好,这里就不重新搭配开发环境。如果有需要我另外开一篇来写搭建环境的过程。本文主要针对已经搭配好的环境中环境变量问题作个总结。
环境变量:其实就是相当于我们一个程序中的全局变量。程序的全局变量在整个程序都可以直接使用。可以在整个程序的任何地方直接调用变量名来使用该变量。环境变量也是类似的机制。
1) 比如我们在exports中设置的路径,就是环境变量。这种环境变量可以使用shell(
P
A
T
H
)
命
令
直
接
查
看
。
PATH)命令直接查看。
PATH)命令直接查看。PATH是指定执行程序路径环境变量,系统会按照PATH的设置,去每个PATH定义的路径下搜索执行文件,先搜索到的文件先执行。
可以通过shell命令来追加进去
export PATH=$PATH:/xxx/xxx //将需配置路径加入$PATH 等号两边一定不能有空格
另种环境变量,在使用编译环境中使用的全局变量,比如在使用makefile或编译linux内核时需要配置一些环境变量。在使用GCC编译程序时也需要指定一些我们需要功能,能通过环境变量来实现。一种是在环境变量中定义,另一种是在Makefile中定变量。本文主要讲的是此情况。
Qt Creator软件配置
开发软件配置主要面向二种操作系统,桌面系统、嵌入式系统。这两种操作系统使用不同的ARCH,导致需要不同的编译器来生成对应系统可以执行的文件。我们当然希望开发时在桌面环境,开发好后可以直接在嵌入环境下也能跑起来。这就需要在电脑上同时配置出这二个系统的运行环境及编译环境。
环境设置过程是
- Compilers设置 //配置编译器版本 影响标准库版本
- QT Versions //配置编译使用的工具。
- Kits //由编译器 及你配置qt版本等共同组成的一个开发套件。
Compilers配置
这里我假设你已经安装好GCC的桌面版本,及arm-linx-版本。我们安装好Qt creator后我们可以直接看到配置信息如下
Tools -> options
QT安装好后自动设置的编译器路径,如果没有特别需要默认即可。
嵌入式环境的编译器,如果安装好后可以直接在安装路径下/bin文件中指定。我这里是使用buildroot构建的文件系统环境,所以我也直接使用相同的编译器。在构建buildroot的时也可以指定编译器或是使用Buildroot默认自带的编译器。建议直接使用Buildroot自带的省事。
这里需要注意红色标识的地方。配置的时候是否正确。
Qt Versions的配置(重点)
QT的编译配置有多种方式,我这使用是qmake版本,另外还可以有自己写Makefile,cmake等。这些我没有使用过不做介绍。
桌面系统指定qmake版本
qmake location用来指定qmake版本,安装qt creator后默认可以直接指定。指定下面会显示为相应的平台。
嵌入式系统指定qmake版本(需要手动点击add来增加设置项)
这里指定你安装的qmake路径生成qt Creator的项目配置文件。显示版本为Embedded Linux版本,用来生成嵌入式版本makefile。
点击 Qt version 5.12.2 for Desk
点击 Qt version 5.12.2 for Embedded Linux Detail字样能看到更详细的配置说明
这里有依赖库的路径,有使用执行文件路径。如果我们编译第三方动态库文件可以导入项目使用
1)把库放到全局变量的/usr/lib库目录下,系统会优会扫描全局变量库路径。如果全局变量中没有找到会到第2个配置路径查找。
2)把它放到qt指定的动态库路径,这里是QT_HOST_LIBS 变量的路径即: qt安装路径/gcc_64/lib
注意:使用qt编译生成动态库使用make install命令 安装默认路径是全局变量/usr/lib当中。
点击 Qt version 5.12.2 for Embedded Linux
如果生成嵌入式动态库则导入到
buildroot/output/host/arm-buildroot-linux-uclibcgnueabihf/lib
在编译嵌入式项目录时,会到这个编译目录找需要的动态库文件。
Qt Kit配置
qt kits是相当于把我们前面配置的工具作一个组合,生成一编译套件。这样我们在使用的时候直接指定使用什么套件,就可以生成对应环境。从图片的配置的项目也可以看到,这样都是我们之前配置的东西。
如果前面配置没有问题,这里就可以直接选择即可。注意下这里的NAME,是我们编译时看到的选项。
主要配置是:
- Name //编译对应平台时选用的名字
- Device //运行程序的平台系统
- Compiler //选择对应平台的编译器
其它的默认即可。
套件配置完成后使用qt编译时的选项(红色为对应平台的Kits名称)
使用QT编译完成后生成对应平台的目录
生成目录中包含套件名称。
Qt Kits套件生成Makefile
在使用qt 时经常需要我们根据需要配置qt.pro文件,会根据qt.pro文件生成相应的程序平台目录,这个目录中会包含一个makefile文件。
会再另外一篇中分析这个目录makefile包含哪些内容。