?
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
最近再jetson orin nano上安装qt环境,为了开发QGC(无人机地面站)必须用到qt的一些private包。在安装qt时,遇到一个问题就是 :Project ERROR: Library ‘assimp’ is not defined.这个问题在qt5.15.2和5.15.3都遇到过,下面我从头带大家下载旧的qt源码并编译,一起来解决相关问题。
一、下载qt源码
1.清华源下载
https://mirrors.tuna.tsinghua.edu.cn/qt/official_releases/qt/5.15/5.15.13/single/,这是官方地址,我这里选择5.15.3。
arm64的处理器选择tar.xz结尾,下载好后拷贝到主机上。
接下来就是解压:
tar -xvf qt-everywhere-opensource-src-5.15.13.tar.xz
cd qt-everywhere-opensource-src-5.15.13
mkdir build && cd build
#我这里跳过了一些东西,安装目录也是在home目录,建议自行安装
../configure -prefix $HOME/QGC/Qt5.15.3 -opensource -confirm-license -release -nomake tests -nomake examples -skip qtandroidextras -skip qtmacextras -skip qtwinextras
2.官方仓库下载
https://download.qt.io/,这是总的目录,5.15.3下载依次点击: archive、qt、 5.15、 5.15.3、 single、 qt-everywhere-opensource-src-5.15.3.tar.xz;也可以直接访问:https://download.qt.io/archive/qt/5.15/5.15.3/single/。

二、编译qt,报错Project ERROR: Library ‘assimp’ is not defined.
在5.15.2和5.15.3甚至其他版本都会报错,具体解决办法比较简单。打开assimp.pro这个文件,注意路径。
通过主机直接修改:
#我的源码在桌面,打开这个文件,去修改它
sudo open ~/Desktop/qt-everywhere-src-5.15.3/qtquick3d/src/plugins/assetimporters/assimp/assimp.pro
修改前:

修改后如图:

!!!一定要删除原本的那一句,并添加如下代码:
CONFIG += link_pkgconfig # 启用 pkg-config 支持
PKGCONFIG += assimp # 指定通过 pkg-config 查找 assimp 库
三、编译qt,报错缺少limits头文件
这两个版本都会有几个.h文件存在缺少头文件,5.15.2版本多,5.15.3版本官方修复了两个,我的路径是:/home/nvidia/Desktop/qt-everywhere-src-5.15.2,缺少头文件的文件大致如下:
- /home/nvidia/Desktop/qt-everywhere-src-5.15.2/qtbase/src/corelib/text/qbytearraymatcher.h
- /home/nvidia/Desktop/qt-everywhere-src-5.15.2/qtbase/src/corelib/global/qendian.h
- /home/nvidia/Desktop/qt-everywhere-src-5.15.2/qtbase/src/corelib/global/qfloat16.h
- /home/nvidia/Desktop/qt-everywhere-src-5.15.2/qtdeclarative/src/qmldebug/qqmlprofilerevent_p.h
以上文件添加:#include
这样就不会报错了,还有报错的,我可能没统计完。
四、qt编译完成,拷贝qt库到系统目录
我qt的安装路径为:/home/nvidia/QGC/Qt5.15.3,这是前面编译qt源码时就决定了,建议大家一步到位,哈哈啊哈。
拷贝到系统路径如图:
| 类型 | 系统路径 |
|---|---|
| 库 (.so) | /usr/local/lib |
| 头文件 | /usr/local/include/Qt5 |
| 插件 | /usr/local/lib/qt5/plugins |
sudo cp /home/nvidia/QGC/Qt5.15.3/lib/*.so* /usr/local/lib/
sudo ldconfig # 更新动态链接器缓存
sudo cp -r /home/nvidia/QGC/Qt5.15.3/include/* /usr/local/include/
sudo cp -r /home/nvidia/QGC/Qt5.15.3/plugins/* /usr/local/lib/qt5/plugins/
五、QGC编译出错
1.fatal error: QtLocation/private/qgeomaptype_p.h: No such file or directory 报错
先前我们安装了qt的源码,我安装在了home目录下,然后我把qt的头文件和库以及插件都拷贝到了/usr/local/include和/usr/local/lib下,这里就完全是低级错误,qt对于私有的头文件,路径在include+包名+版本号+包名+private+头文件名,举个例子:

QGC源码中cmakelists文件路经为/usr/loacl/include,并没有安装好的私有头文件的路径,需要自己添加!!!我这里添加了私有包的文件夹

总结
在安装qt时,这两个错误都是常见的,也比较好改,我被困在了第一个错误很久,网上也有其他教程去解决,新人博客请大家多多指教,膜拜各位大佬。
3562

被折叠的 条评论
为什么被折叠?



