交叉编译qt到arm平台

使用pkg-config命令查看xxx包是否存在:

pkg-config --print-errors xxx

pkg-config的搜索路径可以通过环境变量PKG_CONFIG_PATH指定。需要在运行./configure 之前指定。

./configure -release -qt-libjpeg -qt-libpng -qt-zlib -qt-pcre -xplatform linux-aarch64-gnu-g++ -sysroot ~/rk-qt/sysroot -prefix /home/consys/tool/aarch64-qt-output -opensource -confirm-license -skip qtscript -skip qtwayland -nomake tests -skip qtlocation -skip qt3d -no-opengl -skip qtcanvas3d -skip qtpurchasing -make libs -pkg-config -v -recheck -L H O M E / r k − q t / s y s r o o t / u s r / l i b / − I HOME/rk-qt/sysroot/usr/lib/ -I HOME/rk−qt/sysroot/usr/lib/−IHOME/rk-qt/sysroot/usr/include/

其中-L和-I选项指定的路径为从目标机中拷贝过来的库和头文件目录。

autoconfigure.sh中指定了prefix(/home/consys/tool/aarch64-qt-output),这个目录需要注意并不是绝对路径,如果指定了sysroot,那么生成路径就是在sysroot指定的路径下创建prefix路径,即最终的动态库生成路径是(/home/consys/rk-qt/sysroot/home/consys/tool/aarch64-qt-output),这一点不要搞混了。sysroot的作用是提供一个逻辑地址,configure指定该参数后,编译依赖的头文件和库文件会以sysroot指定的路径作为基地址,即交叉编译原本依赖的头文件路径是/usr/include,指定sysroot后,则变成/home/consys/sysroot/usr/include。

当出现类似情况时,查看config.log,查找关键字xcb,得到:

由此得知缺少libphread库,然后在qt-everywhere-src-5.15.8/qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf中通过添加LIBS关键字加入该库:

LIBS+= -L直接打地址 -l直接打库名

加入库的路径方法有很多种:

(1)export LD_LIBRARY_PATH=目录1:目录2

加入C头文件路径方法:

(1)export C_INCLUDE_PATH= C I N C L U D E P A T H : C_INCLUDE_PATH: CINCLUDEPATH:(HOME)/MyLibrary/include

相关推荐
心态还需努力呀4 分钟前
把 Flameshot 编译进鸿蒙 PC:一次 Qt C++ 截图工具的源码级移植实战
c++·qt·harmonyos
白色的北极熊33 分钟前
c语言 输出菱形字符串
c语言·开发语言
码少女39 分钟前
Linux——多路复用之poll模型
linux·服务器·网络
PatrickYao04221 小时前
Linux安装UV
linux·运维·uv
学习智者1 小时前
《玄》IDE v3.6.3重磅发布:全功能修复与性能飞跃
开发语言·c++·ide·算法·中文语言 玄
顶点多余1 小时前
面试题总结 ---Linux篇
linux·运维·服务器
奔跑吧树袋熊1 小时前
多租户隔离该做到哪一层:从连接池到 ORM 的取舍
开发语言·数据库·oracle·系统架构
大江东去浪淘尽千古风流人物1 小时前
【LoMa】局部特征匹配重访:从LoMa-B到旋转不变LoMa-R的架构与工程实践
开发语言·深度学习·计算机视觉·r语言·视觉定位·sfm·局部特征匹配
菜鸟~noob2331 小时前
【电子战】测向精度极限——克拉美-罗下限(CRLB)与误差分析【含matlab代码】
开发语言·matlab
m0_734571761 小时前
深入理解C++ 析构函数<二>析构顺序
开发语言·c++