admin 管理员组

文章数量: 1086019


2024年4月25日发(作者:楞严咒全文读诵11分钟)

编译 RTKLIB 2.4.2

Hanford

2018年06月06日

变更记录

变更记录

日期 作者

2018.06.06 Hanford

完成初稿

说 明

目 录

目 录

第1章 C++.1

1.1 下载、安装 Embarcadero .1

1.2 打开工程..........................................................................................................1

1.3 编译..................................................................................................................2

1.4 将*.exe复制到bin目录.....................................................................................3

第2章 VC++.............................................................................................................4

2.1 编译核心代码..................................................................................................4

2.1.1 添加核心代码文件.....................................................................................4

2.1.2 禁用预编译头文件.....................................................................................4

2.1.3 使用MBCS字符集......................................................................................5

2.1.4 修改5

2.1.5 找不到6

2.1.6 修改文件7

2.2 编译CUI程序...................................................................................................7

I

第1章 C++Builder

第1章 C++Builder

本章参考了RTKLIB 2.4.2 的帮助文档《docmanual_》第4章,

将使用C++Builder编译器编译RTKLIB源代码。

1.1 下载、安装 Embarcadero RAD Studio

下载 Embarcadero RAD Studio XE2 with Update 4 Hotfix 1 v16.0.4504.

48759,详细信息如下:

网址 /download/radstudio/xe2/delphicbuilder

_xe2_4504_

Size 2.59 GB(2,789,044,224 字节)

CRC32 59DA6879

MD5 F60B93A903E75EA903B289320AD1B0E3

SHA1 DC55555A83E1B5E12C546BF7FFA2374A475C9196

下载完成后,安装 Embarcadero RAD Studio XE2。

1.2 打开工程

运行 Embarcadero RAD Studio XE2,单击【File】【】菜单

项,如下图所示:

图1.1

1

第1章 C++Builder

打开 app目录下的rtklib_roj,如下图所示:

图1.2

说明:打开rtklib_roj可编译生成所有GUI(图形界面)程序;

打开rtklib_roj可编译生成所有CUI(命令行)程序;也可直接

打开某个项目文件,如:。

1.3 编译

以编译为例,在Project Manager窗口内鼠标右键单击,

弹出菜单中单击【Make】或【Build】菜单项(Build全部重新编译一遍;Make

只编译修改后的*.c文件),如下图所示:

2

第1章 C++Builder

图1.3

注意:RTKLIB的全路径名里不要含有汉字,否则编译rtknavi_mkl、rtkpo

st_mkl时会失败。

1.4 将*.exe复制到bin目录

运行,会将编译结果文件appstrsvrRelease_Buildstrsvr.

exe复制到bin目录;

运行appinstall_,会将所有GUI程序的编译结果文件复制到bin

目录;

运行appinstall_,会将所有CUI程序的编译结果文件复制到bi

n目录。

3

第2章 VC++

第2章 VC++

RTKLIB的源代码分为三个部分:

1)核心计算代码在src目录下,这部分代码可以使用VC++编译;

2)CUI程序 convbin、pos2kml、rnx2rtkp 的源代码。这部分代码也可以

使用VC++编译;

3)GUI程序rtkconv、rtkget、rtklaunch、rtknavi、rtknavi_mkl、rtkplot、rt

kpost、rtkpost_mkl、srctblbrows、strsvr的源代码。这部分代码使用了VCL,所

以无法使用VC++编译。

2.1 编译核心代码

本节以VS2010为例,说明如何编译RTKLIB核心代码。

2.1.1 添加核心代码文件

使用VS2010创建一个静态库项目rtklib。

添加RTKLIB 2.4.2的核心代码到项目rtklib里,具体如下:

1)添加 rtklib_2.4.2src*.* 到项目rtklib里;

2)添加 rtklib_2.4.2srcrcv*.* 到项目rtklib里。

2.1.2 禁用预编译头文件

按下图进行配置,禁用预编译头文件的功能

4

第2章 VC++

图2.1

2.1.3 使用MBCS字符集

RTKLIB源代码使用的是MBCS字符集,并不是Unicode字符集,所以需

要按下图进行配置:

图2.2

2.1.4 修改rtklib.h

5

第2章 VC++

增加下面蓝色语句到rtklib.h文件里

#ifndef RTKLIB_H

#define RTKLIB_H

#ifdef _MSC_VER //使用 VC++ 编译

#define DLL

#define ENACMP //enable BeiDou

#define ENAGAL //enable Galileo

#define ENAGLO //enable GLONASS

#define ENAQZS //enable QZSS

#define EXTLEX //enable QZSS LEX extension

#define _CRT_SECURE_NO_WARNINGS

#pragma comment(lib,"")

#pragma comment(lib,"ws2_")

#endif

#include

2.1.5 找不到rtklib.h

编译 rtklib_2.4.2srcrcv*.c时会提示找不到文件rtklib.h,有两种解决方法:

一是修改rtklib_2.4.2srcrcv*.c,将 #include "rtklib.h" 更改为#include "..

/rtklib.h"

二是增加包含目录,如下图所示:

图2.3

静态库项目文件为W:j;

rtklib.h全路径名为W:rtklib_2.4.2srcrtklib.h;

../../rtklib_2.4.2/src是rtklib.h相对于.vcxproj的相对路径。

6

第2章 VC++

2.1.6 修改文件srcrcvrcvlex.c

修改文件srcrcvrcvlex.c,见下面的蓝色语句:

/* decode lex raw message ---------------------------------------------------*/

static int decode_lexr(raw_t *raw)

{

…… …… ……

if (raw->outtype) {

sprintf(raw->msgtype,"LEXR 0x%04X (%4d): stat=%08X week=

%d tow=%10.3f",

type,raw->len,stat,week,tow/1000.0);

} //这里缺少一个右花括号,补上

switch (type) {

case ID_LEXRAW: return decode_lexraw(raw);

case ID_LEXMSG: return decode_lexmsg(raw);

}

return 0;

}

2.2 编译CUI程序

以编译rnx2rtkp为例说明CUI程序的编译。

使用 Visual Studio打开rtklib_,仅保留文件

rnx2rtkp.c,然后加入上一节的静态库rtklib。如下图所示:

图2.4

对于VS2008及其以下版本的Visual Studio,请设置msc依赖于rtklib;对

于VS2010及其以上版本的Visual Studio,请在msc里引用rtklib。如此设置后,

编译msc时将自动连接。

修改rnx2rtkp.c,共有两处,见下面的蓝色语句

#include "../../src/rtklib.h" //rtklib.h前增加 ../../src/

7

第2章 VC++

#if 0 //禁用函数 showmsg、settspan、settime

extern int showmsg(char *format, ...)

{

va_list arg;

va_start(arg,format); vfprintf(stderr,format,arg); va_end(arg);

fprintf(stderr,"r");

return 0;

}

extern void settspan(gtime_t ts, gtime_t te) {}

extern void settime(gtime_t time) {}

#endif

8


本文标签: 编译 文件 代码 使用 核心