使用 Visual Studio Code 调试 RTKLIB
RTKLIB 是测绘导航专业著名的开源软件,因其合理的模块设计和良好的编码风格,具有极好的可扩展性。基于该软件进行二次开发非常方便,因此也被称之为 “GNSS 专业者的奶瓶”。RTKLIB 软件使用 C 语言开发,可以在 Windows、Linux 和 macOS 等多个操作系统上编译运行。
我比较喜欢使用 Visual Studio Code 进行开发。本文以 RTKLIB 中的 RNX2RTKP 为例,基于 Windows 操作系统,使用 GCC 套件进行编译和调试。
安装 MinGW-W64
下载
为了在 Windows 使用 GCC 软件,需要安装 MinGW-w64,目前该项目的最新版本为 8.1.0。首先从 SOURCEFORGE 网站下载 MinGW-w64。MinGW-w64 提供在线安装和完全下载两种方式,但需要注意:在线安装往往会失败,推荐使用完全下载的方式。我下载的选项为 x86_64-win32-seh
,下载之后得到一个扩展名为 7z 的压缩文件。
解压下载的文件,将其中的 mingw64
文件夹复制到你希望的安装软件的位置。我将其复制到了 C:/Program Files
文件夹中,接下来以该目录为例。
配置环境变量
为了在任何目录中使用 GCC,需要将 GCC 添加到系统的 Path 变量中。对于 Windows 11 操作系统,打开“设置”,进入“系统”->“关于”页面,点击“高级系统设置”。在弹出的窗口中点击“环境变量”按钮,进入配置窗口。选中 “Path” 后点击“编辑”,新建一行将 MinGW-w64 的 bin 文件夹加入到环境变量中,如下图所示。
安装 C/C++ 插件
为了在 Visual Studio Code 中调试 RTKLIB,还需要安装 C/C++ 插件。点击 Visual Studio Code 左侧的“扩展”,在搜索框中输入 “C/C++”,由微软开发的 C/C++ 插件将出现在最上方。点击“安装”按钮将其安装到电脑上。
创建开发工程
Visual Studio Code 基于文件目录管理工程。为了编译 RNX2RTKP,首先创建名为 rnx2rtkp
的文件夹,然后将 RTKLIB 的 src
、lib
两个文件夹,以及 app/rnx2rtkp
文件夹中的 rnx2rtkp.c
文件拷贝至其中。形成如下所示的文件结构:
1 | .rnx2rtkp/ |
编译 IERS
为了计算地球自转参数,RTKLIB 使用了 IERS 公布的部分 Fortran 代码,好在 MinGW-w64 中也包含了 Fortran 编译器。在编译 RTKLIB 之前,需要首先编译这些 Fortran 代码,形成链接库。
使用 cd
命令进入 lib/iers/gcc
文件夹,执行以下命令进行编译:
1 | $ mingw32-make |
静待代码编译完成即可。
配置 Visual Studio Code
以上工作完成之后,终于可以配置 Visual Studio Code 了。使用 Visual Studio Code 打开项目文件夹,然后点击菜单“终端”->“配置默认生成任务”,选择“C/C++: gcc.exe 生成活动文件”。此时项目文件夹内将生成一个新的文件夹 .vscode
,里面包含一个文件 task.json
。编辑该文件,更改 args
为:
1 | "args": [ |
这里 -g
参数后为主程序文件名,-o
参数后为编译生成的可执行文件名,-I
参数后为包含 C 语言头文件的文件夹(即 “rtklib.h”),-lwinmm
、-lws2_32
参数指示编译器引入 winmm.dll
和 ws2_32.dll
两个动态链接库文件。
以上工作完成后,可以尝试生成任务了。点击“终端”->“运行生成任务”,启动 GCC 编译。编译成功后,下方的窗口将显示“生成已完成”。查看项目文件夹,会发现已经出现了可执行文件。
接下来进行调试配置。点击“运行”->“添加配置”,选择 “C++(GDB/LLDB)”,将在 .vscode
内生成一个 launch.json
文件。该文件一般不需要更改,只需检查 miDebuggerPath
的值是否为正确的 MinGW-w64 安装路径。在 rnx2rtkp.c 的 main
函数中设置一个断点,点击“运行”->“启动调试”,或者直接按 F5,程序开始进行调试。
最后,如果你完成了一个阶段的开发工作,可以使用如下命令直接编译 RNX2RTKP 程序(注意需要在项目文件夹执行):
1 | gcc src/*.c src/rcv/*.c -g rnx2rtkp.c -I src -o rtklib.exe -lwinmm -lws2_32 |