ubuntu16交叉编译Qt5.9

1、安装交叉编译器

    一般购买ARM开发板,对应的交叉编译器会由厂商提供。交叉编译器也就是能在X86的环境下编译出ARM中能运行的程序,例如cortex-A9的交叉编译器:

  

    将这个包在ubuntu中解压,路径自己决定。然后将这个交叉编译器中的bin目录加入环境变量,例如我的:

export PATH=/home/clark/QtEnv/arm-cortexa9-linux-gnueabihf/4.9.3/bin:$PATH

    设置ubuntu环境变量可以参考我的博客:http://blog.csdn.net/a18373279153/article/details/78542605

 

 

    验证环境变量是否设置成功,在控制台中输入***-g++ -v,其中***代表你的交叉编译器的名字,每种类型的芯片对应的不一样,具体可以去bin目录下查看,例如我的是:

    ubuntu16交叉编译Qt5.9_第1张图片

 

    所以我需要输入arm-cortexa9-linux-gnueabihf-g++ -v,然后控制台中出现编译器的版本号就代表你安装成功了。如果找不到,可能是你在64位的操作系统上安装了32位的交叉编译器,请看我这篇文章:https://blog.csdn.net/a18373279153/article/details/49658425

 

 

2、交叉编译Qt

    首先在Qt官网下载对应的Qt源码:http://download.qt.io/archive/qt/

    

 

    在ubuntu中解压缩,跳转到qt-everywhere-opensource-src-5.9.1/qtbase/mkspecs/linux-arm-gnueabi-g++/目录下,修改qmake.conf文件,将编译器都更换为刚刚安装的交叉编译器,例如我的:

    ubuntu16交叉编译Qt5.9_第2张图片

 

    再跳转到qt-everywhere-opensource-src-5.9.1目录下,配置安装选项:

 

./configure -release -nomake examples -no-iconv -no-opengl -no-assimp -no-qt3d-profile-jobs -no-qt3d-profile-gl -xplatform linux-arm-gnueabi-g++ -prefix /home/user/QtEnv/QtEmbedded-5.9.1-arm -opensource -confirm-license

    这里我去掉了opengl、Qt3D相关的库、examples,编译他们三个会导致编译失败。

 

    -prefix /home/user/QtEnv/QtEmbedded-5.9.1-arm这个是设置安装位置,由你自己定义。

    -no-iconv是为了防止应用程序出现如下错误:

            QIconvCodec::convertFromUnicode: usingLatin-1 for conversion, iconv_open failed
            QIconvCodec::convertToUnicode: using Latin-1for conversion, iconv_open failed​

 

    配置完成之后输入:make -j4,表示开启4个线程一起编译,这样会快些,编译得个把小时。

    编译完成后,输入make install,安装Qt。

 

 3、设置Qt Creator

    同样在Qt官网下载可以直接安装的Qt,例如:

    这个是linux64位桌面版的Qt,自带Qt Creator。把他复制到ubuntu中后,可以直接./运行起来,图像化安装。

    接下来配置构建和运行,将刚刚安装的QtEmbed版本和交叉编译器都添加进去

    ubuntu16交叉编译Qt5.9_第3张图片
 

    ubuntu16交叉编译Qt5.9_第4张图片

    ubuntu16交叉编译Qt5.9_第5张图片

   ubuntu16交叉编译Qt5.9_第6张图片

    注意:交叉编译时只能点构建,不能点运行。因为编译出程序是在arm跑的。

    ubuntu16交叉编译Qt5.9_第7张图片

 

你可能感兴趣的:(Qt从入门到放弃)