基于树莓派4B平台下的Qt中编译rktlib( ARM aarch64)
编译环境
硬件平台:树莓派4B (4GB) 操作系统:Linux aarch64 GNU(Linux raspbian 5.10.88-Release-OPENFANS+20211222-v8) Qt版本:Qt 5.11.3 + Qt Creator 4.8.2 rtklib版本:基于rtklib_2.4.3_c33原版进行了部分功能修改。
安装Qt
1. pi@raspberrypi:~ $ sudo apt-get update
2. pi@raspberrypi:~ $ sudo apt-get install qt5-default
3. pi@raspberrypi:~ $ sudo apt-get install qtcreator
导入和编译
- 打开Qt Creator,选择“Open Projects”,选择“RTKLib.pro”,用默认编译配置工程。
- 新项目的编译的顺序是:qmake->构建->运行(记得一定要先qmake)。
由于更改了编译环境,需要按照当前实际环境创建.pro文件,并且运行qmake生成适当的Makefile。由于rtklib工程中已经有了RTKLib.pro文件,因此只需要重新生产Makefile即可。 在RTKLib文件夹上右键选择“执行qmake”. 3. qmake完成后,如果此时直接在RTKLib文件夹中右键选择“构建”,会提示错误”缺少libRTKLib.a“: error: No rule to make target ‘…/…/src/libRTKLib.a’, needed by ‘rtknavi_qt’. Stop. 这个问题的根源是由于各个子项目rtkpost_qt、rtknavi_qt等都引用了libRTKLib.a链接库。(rtkpost_qt.pro文件中,会看到一行代码:RTKLIB =…/…/src/libRTKLib.a),因此需要先编译生成libRTKLib.a库,拷贝到指定目录中,其他子项目才能编译通过。 - 编译libRTKLib.a。
在src文件夹上右键选择”构建“,完成编译后,在build-RTKLib-unknown-Debug/src目录下会有一个libRTKLib.a文件,这样再编译其他工程时就不会再报缺少libRTKLib.a的错误。如果你的编译配置里没有采用shadow build,可能需要将编译好的libRTKLib.a拷贝到其他目录下,具体要看×.pro文件中这一行代码的地址是哪里:RTKLIB =…/…/src/libRTKLib.a) - 编译rtkpost_qt等过程中还出现了一个错误:
cannot find -lpng
linker command failed with exit code 1(use -v to see invocation)
查看了pro文件,其中有一行: LIBS += -lpng $${RTKLIB} 这一个的意思是,需要一个名为lpng的库,全称 是libpng。于是马上安装libpng库():
sudo apt-get install zlib1g-dev
sudo apt-get install libpng-dev
安装完成后,编译通过。 运行效果如下: 后续继续完善基于实时数据流的PPP功能。
|