在ubuntu下利用arm交叉编译qt源码加串口模块,并且调用串口类,生成arm可执行程序
linux平台:ubuntu16.04
qt:5.4.1
qt包下载地址 http://download.qt.io/archive/qt/5.4/5.4.1/
先前下载的是submodules目录下的 qtbase-opensource-src-5.4.1.tar.xz
这个里面没有Qserialport模块,所以需要下载Qserialport模块。
这里我直接 下载了 single目录下的
qt-everywhere-opensource-src-5.4.1.tar.gz
其次下载arm交叉编译器
arm-cortex_a9-eabi-4.7-eglibc-2.18.tar.gz
tar xf qt-everywhere-opensource-src-5.4.1.tar.gz // 解压文件
tar xf arm-cortex_a9-eabi-4.7-eglibc-2.18.tar.gz
sudo vi /etc/environment
source /etc/environment
cd /home/guo/software/qt/qt-everywhere-opensource-src-5.4.1
在README查看如何添加模块
可以看到加模块就需要在执行make命令的时候加参数 module-qtscript
所以要加串口模块,就需要改成,module-qtserialport
以上是关键性的一步,加上这一步,直接就可以交叉编译生成了QtSerialPort.so动态链接库
现在从头开始,
进入 cd qtbase/mkspecs/linux-arm-gnueabi-g++
此时绝对路径:/home/guo/software/qt/qt-everywhere-opensource-src-5.4.1/qtbase/mkspecs/linux-arm-gnueabi-g++
vi qtmake.conf //进入配置文件,将GNU的编译器改成arm交叉编译器的命令,配置好qmake的环境
接着
cd ../../../
此时绝对路径:/home/guo/software/qt/qt-everywhere-opensource-src-5.4.1
在此目录下新建脚本build.sh
./configure -prefix /opt/qtlib -release -opensource -qt-libpng -qt-libjpeg -plugin-sql-sqlite -widgets -qt-sql-sqlite -make libs -no-cups -no-nis -no-iconv -no-openssl -no-iconv -no-accessibility -no-sse2 -silent -xplatform linux-arm-gnueabi-g++ -nomake tools -nomake examples -nomake tests -qt-freetype -no-glib -strip -linuxfb -plugindir /opt/qtlib/plugins
./build.sh 运行脚本,通过此脚本,运行configure配置文件,配置好编译及安装环境
接着在此目录下运行
make -j4 module-qserialport
运行完成后执行
make install
这下在/opt/qtlib/bin/有了qmake可执行文件,此文件是ARM版本的
还有/home/guo/software/qt/qt-everywhere-opensource-src-5.4.1目录下的qtserialport目录里就多出了lib目录,lib目录里也有了.so动态链接库
这个lib目录和include目录,在后面运行串口模块的程序中要引用
利用QT5.4.1打开 TestSerialPort.pro文件。工程就被打开了,然后右键,选择添加库
删除里面serialport模块
QT +=serialport 这句删掉
然后选择外部库
只选择linux平台,点击选择库文件路径
lib目录在/home/guo/software/qt/qt-everywhere-opensource-src-5.4.1/qtserialport/lib
include目录路径:
/home/guo/software/qt/qt-everywhere-opensource-src-5.4.1/qtserialport/include
添加了之后再pro文件就多出了
unix:!macx: LIBS += -L$$PWD/../../../software/qt/qt-everywhere-opensource-src-5.4.1/qtserialport/lib/ -lQt5SerialPort
INCLUDEPATH += $$PWD/../../../software/qt/qt-everywhere-opensource-src-5.4.1/qtserialport/include
DEPENDPATH += $$PWD/../../../software/qt/qt-everywhere-opensource-src-5.4.1/qtserialport/include
然后点击保存
在终端进入TestSerialPort目录输入
/opt/qtlib/bin/qmake
make