问题描述
.源码编译时使用-sysroot指向目标板根文件系统、因为需要使用依赖库;
./configure -prefix /usr/local/qt5.15.12 \
-sysroot /home/student/workplace/source/nanopct4/buildroot-2022.11.1/output/staging \
-opensource \
-confirm-license \
-release \
-shared \
-eglfs \
-opengl \
-xplatform linux-aarch64-gnu-g++ \
-no-iconv \
-alsa \
--gui=yes \
-qt-assimp \
-recheck-all
执行完make install后,是安装在以-sysroot为根目录下的,使用qtcreator添加qmake显示安装错误;
方法:在qmake所在目录下建qt.config文件:
[Paths]
Prefix = ../
之后可以识别qt版本;接着产生一个问题;构建工程可以使用cmake就是CMakeLists.txt或使用.pro文件,使用默认工程编译报错:“-1: error: cannot find crt1.o: No such file or directory”;就是交叉编译环境有问题;在使用CMakeLists.txt时设置CMAKE_SYSROOT环境变量可以解决;但是对使用.pro的文件的工程不起作用;通过查看makefile文件发现–sysroot= 后是的,修改makefile加上目标板根文件路径,可以正常编译;问题就转换为.pro构造工程–sysroot配置问题
解决方法
./configure 选项增加-extprefix选项;在执行make install时,安装到指定主机的路径
./configure -prefix /usr/local/qt5.15.12 \
-sysroot /home/student/workplace/source/nanopct4/buildroot-2022.11.1/output/staging \
-extprefix /home/student/workplace/source/local/qt5.15.12 \
-opensource \
-confirm-license \
-release \
-shared \
-eglfs \
-opengl \
-xplatform linux-aarch64-gnu-g++ \
-no-iconv \
-alsa \
--gui=yes \
-qt-assimp \
-recheck-all