最开始准备使用交叉编译的方案给TX2写程序。因为台式机总是会比TX2快。
在粗浅了解和JetSon论坛上的一些消息后还是决定在TX2上安装完整的Qt Creator。
考虑到目前QT6早已推出并且和主机开发环境匹配,选择安装 Qt6。对Qt5有需求的同志、同学请找其他博客,更加清晰简单。
本博客采用编译的方法在TX2上安装Qt6
无非就是输入邮箱进行注册、绑定手机号,忽略不谈。
1.2 找到Qt官网下载源码 1.2.1 下载页面 1.2.2 选择开源版本其他版本没有试,一来要花钱,二么这次就是冲着编译去的。
一定不要直接下载,网页并不知道我们是ARM64位处理器的,下下来会是x64的安装包。
同上不要直接选择网页推荐的。
如果是Qt老手可以选择下面分包。
名称类似qt-everywhere-src-x.x.x.tar.xz
解压缩略去,tx2是图像化界面直接鼠标点点就好。
查看安装要求以后的版本可能不太一样。
这里有个巨坑
一定要取/qtbase/src/plugins/platforms/xcb看一眼readme
咱就是说,如果xcb因为这个原因没有安装成功,platforms下不会生成libqxcb.so的,既然这么重要,居然没有加入install -all的readme中,也是逆天。
查看tx2cmake版本
cmake --version
如果符合要求 camke>=3.18 不用管,否则要安装新版,比如我。
使用snap安装cmake至最新版本,注意一定要加classic,不然它不让安装
sudo snap install cmake --classic
cmake安装完毕。
查看版本
cmake --version
**注意:**这里一定要确认cmake版本,如果出现发现cmake无法更新,请先卸载原本的cmake,再通过snap安装
卸载cmake方法:
sudo apt remove --purge cmake hash -r更新GCC
千万不要选择过高的GCC版本,有巨坑在最后补充。
查看要求只需要编译器能够支持C++17的标准库即可。
新刷好的TX2的gcc版本是gcc7
查一下支持,我们只需要选择gcc8,我们可以把gcc,g++都装了
//安装gcc8,g++8 sudo apt-get install gcc-8 sudo apt-get install g++-8 //使用默认优先级的方法设置默认版本 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 100 sudo update-alternatives --config gcc sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-8 100 sudo update-alternatives --config g++ //检查版本设置正确 gcc -v g++ -v
如此C++编译器安装完毕
TX2的默认python是2.x的,这里强烈推荐使用3.6.
具体操作和gcc差不多不重复
没啥坑,安装然后验证一下就好了
sudo apt install perl perl -v安装libxcb
强烈推荐去下载xcb的源码
https://xcb.freedesktop.org/
后者依赖前者,所以对应相同版本的两个都要下载
各自解压后安装
sudo ./configure sudo make -j4 sudo make install编译
看readme.md中的内容开始编译
选择自己喜欢的目录,我喜欢放在opt下面
./configure -prefix /opt/Qt6
如此makefile文件生成出来了。
但是直接make,会发生错误,有知道的同学、同志可以告诉我为什么
这里使用cmake --build命令编译。但是千万不用使用parallel并行编译有坑。
//不用使用 cmake --build . --parallel //老老实实基础编译 cmake --build .Qt安装
因为我们前面通过configure配置过安装目录了,直接安装即可
sudo cmake --install .
第一次超过15%,一般都是没问题,如果后面卡了,多试几次。在15%前面卡了的话,看下下面的踩坑,可能有解决。
配置环境变量sudo gedit ~/.bashrc
写入以下内容
export QTDIR=/data/opt/Qt6 export PATH=$QTDIR/bin export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
其中QTDIR是我Qt6的安装目录
刷新启用环境变量
. .bashrc
验证下环境变量配置成功
qmake -vQt Creator
需要编译器的可以安装
前往之前下载qt源码的地方下载qtcreator的源码
解压后编译
并且指定最终的安装目录
mkdir build cd build cmake .. -DCMAKE_INSTALL_PREFIX=/data/opt/qtcreator7编译
make安装到特定目录
其实用之前cmake阶段的指定目录不需要在这里重新定目录,我自己编的时候上面忘记加了,问题不大。
sudo make install DESTDIR= /data/opt/qtcreator7使用
qtcretor并不是必需的。完全可以在windows下写项目然后传去Tx2
生成项目文件
qmake -project
通过.pro文件生成makefile
qmake test2.pro
同文件夹下直接make生成可执行文件
make
直接使用
./test2踩坑 gcc版本过高
最开始使用了gcc-11。虽然满足要求,但是出现如下错误。
大致的源码内容是
const chr16_t dummySubject = 0; //这里取这个静态变量的地址会直接报错 &dummySubject;
咨询了一下研究过C++的师兄,他的建议是谨慎选择C++编译器的版本和供应商。比较乱而且坑很多。
问题还是TX2的ARM64_v8太弱了。后者需要的内容,前者半天都没编译成功。
而且在使用 --parallel指令之后,虽然很快,但是会吃满资源,导致VNC和SSH难以连接上TX2,让我们对TX2发生了啥一无所知。
按理说这个本不该是问题,偏偏发生了。TX2自带的32G容量根本不够。
如果有QT老手能够做到部分编译就不会有这个问题。如果要求不高,直接安装qtbase应该也能满足一些要求。
申请块固态吧,各位。



