将RTKLIB编译成静态库

  • Post author:
  • Post category:其他




rtklib编译

在写自己的程序时,想要调用rtklib.h,和它的一些文件来进行运行,想要将rtklib编译成静态库安装在系统的目录下,这样基于rtklib的二次开发就不用再使用源码了,直接引用静态库即可。

静态库和动态库的区别可以参考

动、静态库



编译过程

https://github.com/libing64/learning_rtklib.git参照github上提供的文件,它基于rtklib使用其中的一些函数对卫星观测的一些文件进行读取信息。按照所提供的README进行编译。

  • 将RTKlib git到当前的文件下,转到RTKLIB/src,创建build文件夹

  • 别人提供的cMakeLists.txt,先在指定的目录下进行cmake,得到需要的Makefile

  • 进行make,在将rtkcnm.c编译成rtkcnm.c.o时报错

/Users/wcli/Desktop/RTKLIB_TEST/learning_rtklib-master/RTKLIB/src/rtkcmn.c:2983:21: 
error: implicit declaration of function 'strtok_r' is invalid in C99 [-Werror,-Wimplicit-function-declaration]

strtok_r函数是在string.h中,而我们的头文件中引用了#include “rtklib.h”,rtklib.h中包含了string.h所以头文件是没有问题的。

但在string.h中找到对strtok_r函数的定义,他要求在

__DARWIN_C_LEVEL >= 199506L

的条件下才起效果,但在rtkcmn.c的开头中定义为:

#define _POSIX_C_SOURCE 199309

__DARWIN_C_LEVEL :应该是一种规范的宏定义,应该在书写的过程中没有问题。

_POSIX_C_SOURCE:如果您在使用GCC的Linux上工作,那么默认情况下它在-std=gnu11或-std=gnu90模式下工作,并且POSIX(以及其他一些)符号集是可见的,而无需设置_XOPEN_SOURCE或_POSIX_C_SOURCE或其他类似的宏。如果使用-std=c11或-std=c99等,则POSIX和GNU符号在默认情况下不可用;必须定义XOPEN_SOURCE或POSIX_C_SOURCE才能看到POSIX符号。

POSIX:可移植操作系统接口(Portable Operating System Interface of UNIX,缩写为 POSIX )

POSIX符号与正则表达式搭配使用,例如可以搜索文件的名称

编译的过程出现的问题不是太清楚,重新在虚拟机上安装文档中给的CMakeLists进行编译可以完成,(此时采用的是RTKLIB 2.4.2)这样在我的

cd ~/桌面/learning_rtklib-master/RTKLIB-master/src/build中编译得到了librtklib.a这个静态库

  • 然后再利用sudo make install 将这个库传递到本地的usr/local/lib中,方便以后直接进行调用。

接下来便可以对所写的函数进行编译:

cd cd ~/桌面/learning_rtklib-master
mkdir build
cd build
cmake ..
make

接着便可以调用编译完成的可执行程序



版权声明:本文为weixin_43495185原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。