交叉编译 Qt5.12.8

    技术2023-06-09  92

    编译 Qt 5.12.8

    下载Qt 源码安装交叉编译器制作编译脚本可能遇到的错误cannot find -lclip2tri cannot find -lpoly2triQIconvCodec::convertToUnicode: using Latin-1 for conversion, iconv_open failed 安装添加套件

    $lscpu #查看CPU信息,选择用什么交叉编译器 $gcc -v #查看当前 linux 系统自带的gcc版本

    下载Qt 源码

    http://download.qt.io/archive/qt/5.12/5.12.8/single/ 在安装时也有源码,最好使用single文件里的源码

    安装交叉编译器

    注:笔者的板子是aarch64, 所以用了 aarch64-linux-gnu 根据不同的板子使用不同的交叉编译器工具

    ##安装 g++-aarch64-linux-gnu 交叉编译器 $sudo apt install g++-aarch64-linux-gnu #安装 $aarch64-linux-gnu-g++ -v #查看默认安装的gcc版本

    制作编译脚本

    新建文本改名为 autoConfig.sh,复制粘贴以下内容

    ./configure \ -prefix /home/hu/hu/aarch64-qt5.12.8-2/bin \ -release \ -opensource \ -skip qtwayland \ -skip qtlocation \ -skip qtscript \ -xplatform linux-aarch64-gnu-g++ \ -make libs \ -optimized-qmake \ -no-opengl \ -no-sse2 \ -no-openssl \ -no-cups \ -no-glib \ -no-pkg-config \ -no-separate-debug-info \ -pch \ -shared \ -qt-libjpeg \ -qt-zlib \ -qt-libpng

    sh:1:python:not found //解决:安装python

    $sudo apt-get install swig python-dev python3-dev

    可能遇到的错误

    cannot find -lclip2tri cannot find -lpoly2tri

    发现是location模块依赖的,上面的脚本已修改

    ./configure \ -prefix /home/hu/hu/aarch64-qt5.12.8-2/bin \ -release \ -opensource \ -skip qtwayland \ -skip qtlocation \ -skip qtscript \ -xplatform linux-aarch64-gnu-g++ \ -make libs \ -optimized-qmake \ -no-opengl \ -no-sse2 \ -no-openssl \ -no-cups \ -no-glib \ -no-pkg-config \ -no-separate-debug-info \ -pch \ -shared \ -qt-libjpeg \ -qt-zlib \ -qt-libpng

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

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

    解决 :下载 http://ftp.gnu.org/gnu/libiconv/libiconv-1.14.tar.gz e x p o r t C C = / u s r / b i n / a a r c h 64 − l i n u x − g n u − g c c . / c o n f i g u r e − p r e f i x = export CC=/usr/bin/aarch64-linux-gnu-gcc ./configure -prefix= exportCC=/usr/bin/aarch64linuxgnugcc./configureprefix=PWD/bin -host=arm-linux make make install

    遇到问题: In file included from progname.c:26:0: ./stdio.h:1010:1: error: ‘gets’ undeclared here (not in a function) _GL_WARN_ON_USE (gets, “gets is a security hole - use fgets instead”); ^ make[2]: *** [progname.o] Error 1 make[2]: Leaving directory /usr/local/src/zabbix-2.4.7/libiconv-1.14/srclib' make[1]: *** [all] Error 2 make[1]: Leaving directory/usr/local/src/zabbix-2.4.7/libiconv-1.14/srclib’ make: *** [all] Error 2 解决方法: vi libiconv-1.14/srclib/stdio.in.h 将1010行的代码:_GL_WARN_ON_USE (gets, “gets is a security hole - use fgets instead”);替换为: #if defined(GLIBC) && !defined(UCLIBC) && !__GLIBC_PREREQ(2, 16) _GL_WARN_ON_USE (gets, “gets is a security hole - use fgets instead”); #endif 部署: 把bin 下的preloadable_libiconv.so 拷到的/usr/local/SeerRobotics/robod/ 下 修改 /etc/profile 在umask 022上一行添加 export LD_PRELOAD=/usr/local/SeerRobotics/robod/preloadable_libiconv.so

    安装

    如果遇到 qt 没有被正确安装,请运行make install 把从官方安装的Qt5.12.8/mingw73_64/bin/qt.conf 复制黏贴到bin/qmake.exe 同等目录, 注意,编码一定要ANSI格式,不能用UTF-8。路径分隔符要"/“或”\"

    注:如果下次打开再次提示 qt 没有正确安装,请运行 make install 则末尾追加 /etc/profile 文件, 把编译后的qt 安装顶层目录加到环境变量里

    export PATH=$PATH:/Qt make install 后的路径

    添加套件

    配置 Kits : https://blog.csdn.net/u012020854/article/details/76213475

    Processed: 0.022, SQL: 9