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
接着便可以调用编译完成的可执行程序
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)