VMware虚拟机(X86_64)
Jetson nano(aarch64)
流程上主要参考:
Ubuntu20.04.1(X86_64)Qt5.14.2配置ARM64交叉编译环境
JetsonNano QT5.12.9交叉编译和环境搭建
参考:
ubuntu16.04 安装交叉编译工具aarch64-linux-gnu-gcc/g++
NVIDIA Jetson NX 交叉编译环境Ubuntu18.04
gcc是GCC中的GUN C Compiler(C 编译器). g++是GCC中的GUN C++ Compiler(C++编译器)
参考:Ubuntu交叉编译aarch64版本qt
sudo apt-get install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu
aarch64-linux-gnu-gcc -v
也可以输入aarch64 +TAB是否出现提示,从而查看配置是否成功 :
写个简单的demo测试一下
/*
* test.cpp
* for cplusplus
* test aarch64-linux-gnu-g++
*/
# include
int main(int argc,char **argv)
{
std::cout << "hello world!" <<std::endl;
return 0;
}
在虚拟机中编译:
aarch64-linux-gnu-g++ test.cpp -o test
显然,在这里无法执行,然后将生成的可执行文件放到嵌入式板子上运行,权限不够的话记得加权限
方案:因为Jetson nano的资源较少,所以在自己的PC上配置ARM64的编译环境,配置Qt交叉编译环境,然后用Qt编译自己写的代码,在PC上编译完成后,copy到ARM平台上运行
源码压缩文件下载地址
然后将压缩包 1 解压,得到文件夹 2.
参考:
Ubuntu交叉编译aarch64版本qt
JetsonNano QT5.12.9交叉编译和环境搭建
qt-everywhere-src-5.14.2/qtbase/mkspecs/linux-aarch64-gnu-g++/qmake.conf
**qmake.conf**
,参数作用参考Qt5.12.11交叉编译+64位ARM_aarch64+全志H5 CortexA53QT_QPA_DEFAULT_PLATFORM = linuxfb
QMAKE_CFLAGS_RELEASE += -O2 -march=armv8-a -lts
QMAKE_CXXFLAGS_RELEASE += -O2 -march=armv8-a -lts
进入源码目录cd qt-everywhere-src-5.14.2
,创建文件 autoConfigure.sh 进行编译选项的配置
cd qt-everywhere-src-5.12.9/
touch autoConfigure.sh
chmod 777 autoConfigure.sh
内容如下:
#!/bin/sh
./configure \
-prefix /home/feiyangqu/myFile/Qt/Qt5.14.2-aarch64 \
-confirm-license \
-opensource \
-release \
-make libs \
-xplatform linux-aarch64-gnu-g++ \
-pch \
-qt-libjpeg \
-qt-libpng \
-qt-zlib \
-no-sse2 \
-no-cups \
-no-glib \
-no-dbus \
-no-opengl \
-no-xcb \
-no-separate-debug-info \
./autoConfigure.sh
,然后进行编译我遇到的问题以及解决:sudo apt-get install build-essential
,即可运行成功前面运行./autoConfigure.sh
错误较多,就直接终端使用了下面的语句然后make
:
sudo apt-get install build-essential
sudo apt-get install libgl1-mesa-dev
sudo apt-get install libglu1-mesa-dev
sudo apt-get install libegl1-mesa-dev
sudo apt-get install freeglut3-dev
sudo apt-get install libclang-dev
./configure -prefix /home/feiyangq/myFile/Qt/Qt5.14.2-aarch64 -make libs -xplatform linux-aarch64-gnu-g++ -no-opengl -skip qtdeclarative
-prefix 是QT编译后文件目录
-xplatform 是arm编译器类型,在qtbase/mkspecs目录下,根据自己交叉编译工具进行相应的替换
-no-opengl 跳过编译openGL(因为我已经安装了Qt,所以不需要界面)
-skip qtdeclarative 跳过 qtdeclarative(不跳过,编译出错,出错的原因不清楚)
如果有别的需求,可以./configure -help查看具体命令
直接make install
,就可以看到前面 configure 处 -prefix 参数的位置出现我们指定的安装目录:/home/feiyangq/myFile/Qt/Qt5.14.2-aarch64
在qt creator中加入刚才编译安装的arm版qt,详细步骤参考:Ubuntu20.04.1(X86_64)Qt5.14.2配置ARM64交叉编译环境
不过打开编译器部分,我的已经可以在 Auto-detected 看到 arm64 的编译器。可能因为我是先编译源码,后用 run 文件安装的 Qt:
添加 GCC 的 C / C++编译器中的 aarch64-linux-gnu-gcc / g++
,好奇的查了一下aarch64-linux-gnu-cpp,cpp是The C Preprocessor(预处理器):
usr/
目录:/usr/local/
目录;/bin
是系统的一些指令。/sbin
一般是指超级用户指令。 /usr/bin
是你在后期安装的一些软件的运行脚本。/usr/sbin
放置一些用户安装的系统管理的必备程式例如:dhcpd、httpd、imap、in.*d、inetd、named、netconfig、squid、swap、tcpd、tcpdump等。$PATH
里是否已经包含了这些环境变量。可以查看PATH,如果是:PATH=$PATH:$HOME/bin
则需要添加如下:PATH=$PATH:$HOME/bin:/sbin:/usr/bin:/usr/sbin
QT Versions 中添加之前那编译源码得到的 交叉编译版的 Qt:
Jetson nano的Qt安装以及测试:待续。。。。
见文章:Docker的安装(Ubuntu 20.04 LTS)(包括对官方文档的介绍)
待续。。。。。
开了一个坑,会随着项目的进行持续更新。