背景
在完成gnss时间同步程序大部分需求串口配置、串口数据中找出推荐定位信息RMC解析UTC时间以及UTC时间更新系统时间等功能后,有个需求比较特别,需要客户来操作。当车辆在地库场景待时间过久后重新回到地面,一直在自走的系统时间与又定位好的UTC时间可能相差大。这时候需不需要更新呢?我也不清楚,但提供了两个方式给客户选择。
方式1:强制同步
方式2:非强制同步
选择非强制同步,如果误差过大,系统时间不会更新为UTC时间,但由于这个设计,系统时间就可能一直不能同步UTC时间,这时候,就要提供一个接口,告诉使用客户当前的系统时间与UTC误差,以及是否要强制更新。
现在要把上述接口需求做成api方式,当然我也不会。想到最近火爆而又迅速降温的chatGPT,看看它是不是一个合格的人工智能了,不是我不知道,我在考验chatGPT.(doge),如果可行,以后程序框图是不是chatGPT老兄帮忙作图呀,嘿嘿。废话不多说开干。
VScode插件下的chatGPT
VScode插件里面有琳琅满目的chatGPT工具,我所使用的是CHAT-GPT中文版,这个用多了还要收费,吐血。作为一个chatGPT新玩家,它不用注册,有一定的免费字数,而且不常用 确实还可以的。
做完我的提问,chatGPT马上就出了答案,表现不错。
刚想问一下句如何使用这些动/静态库,结果就要收费了,吐血,贫穷的我肯定不会认这个账,自己想办法。
修改一下.c .h
hello.c
#include "hello.h"
void hello_world() {
printf("Hello, world!\n");
}
hello.h
#include <stdio.h>
void hello_world();
再来一个调用的main.c
#include "hello.h"
int main(){
hello_world();
return 0;
}
- 再用gcc生成动态库libhello.so
gcc --shared -o libhello.so hello.c
- 再将mian.c连接动态库libhello.so
gcc mian.c -L. -lhello -o main
- 再将动态库libhello.so文件放在/lib或者/usr/lib下,那么默认就能找到。如果放在其他目录下,需要编辑/etc/ld.so.conf文件,加入库文件所在目录的路径,然后ldconfig下。该命令会重建/etc/ld.so.cache文件即可。
sudo cp -r libhello.sp /usr/lib
ldconfig
- 再检查一下动态链接库连接
ldd mian
hz@titan:~/c_program/vscode/encapsulation_api$ ldd main
linux-vdso.so.1 (0x00007ffea87ab000)
libhello.so => /lib/libhello.so (0x00007f3bc611e000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f3bc5f2c000)
/lib64/ld-linux-x86-64.so.2 (0x00007f3bc614d000)
- 执行测试一下
hz@titan:~/c_program/vscode/encapsulation_api$ ls
hello.o libhello.a libhello.so main mian.c
hz@titan:~/c_program/vscode/encapsulation_api$ ./main
Hello, world!
bigoo,可行。哎,靠ai不如靠自己。
参考连接
使用动态库参考链接