?

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言


最近再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,缺少头文件的文件大致如下:

  1. /home/nvidia/Desktop/qt-everywhere-src-5.15.2/qtbase/src/corelib/text/qbytearraymatcher.h
  2. /home/nvidia/Desktop/qt-everywhere-src-5.15.2/qtbase/src/corelib/global/qendian.h
  3. /home/nvidia/Desktop/qt-everywhere-src-5.15.2/qtbase/src/corelib/global/qfloat16.h
  4. /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时,这两个错误都是常见的,也比较好改,我被困在了第一个错误很久,网上也有其他教程去解决,新人博客请大家多多指教,膜拜各位大佬。

更多推荐