在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的环境

在ubuntu下利用arm交叉编译qt源码加串口模块,并且调用串口类,生成arm可执行程序_第1张图片

接着

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文件。工程就被打开了,然后右键,选择添加库

在ubuntu下利用arm交叉编译qt源码加串口模块,并且调用串口类,生成arm可执行程序_第2张图片

删除里面serialport模块

QT +=serialport 这句删掉

 

 

 

然后选择外部库

在ubuntu下利用arm交叉编译qt源码加串口模块,并且调用串口类,生成arm可执行程序_第3张图片

 

只选择linux平台,点击选择库文件路径

在ubuntu下利用arm交叉编译qt源码加串口模块,并且调用串口类,生成arm可执行程序_第4张图片

lib目录在/home/guo/software/qt/qt-everywhere-opensource-src-5.4.1/qtserialport/lib

在ubuntu下利用arm交叉编译qt源码加串口模块,并且调用串口类,生成arm可执行程序_第5张图片

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

你可能感兴趣的:(Linux,arm,qt,交叉编译移植篇)