记录:在ubuntu中以C语言实现json文件读取遇到的问题(1)(说不定会有2)

2023-05-16

[4.12]记录在ubuntu中以C语言实现json文件读取遇到的问题(1)(说不定会有2)
(暂记录遇到的问题及解决,其中还有些原因没有搞明白)

1.首先过程参考自一位大佬的博文(目前找到的c语言解析json文件很详细的博文了,感谢博主!):
https://blog.csdn.net/qq_35522096/article/details/115358647?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2aggregatepagefirst_rank_v2~rank_aggregation-2-115358647.pc_agg_rank_aggregation&utm_term=c%E8%AF%AD%E8%A8%80json%E6%96%87%E4%BB%B6%E8%A7%A3%E6%9E%90&spm=1000.2123.3001.4430

在实现时遇到一些问题,对ubuntu不咋熟,大佬写的解决方案没咋看明白,最后瞎搞一通,还是绕回了大佬记录的解决方法。。现在自己详细记录,以便以后翻看回顾。

2.按照例子解压库文件,在同一文件夹下写了json.c,但是编译时提示:fatal error: cJSON.h: 没有那个文件或目录。
解决:把cJSON.h和cJSON.c拷贝到项目所在的文件下(参照原博文中的一个方法)。

3.接上,直接运行代码:gcc json.c,接下来遇到另一个问题:
/tmp/ccYj3K4t.o:在函数‘main’中:
json.c:(.text+0x7c):对‘cJSON_Parse’未定义的引用
json.c:(.text+0xb5):对‘cJSON_GetObjectItem’未定义的引用
json.c:(.text+0xe6):对‘cJSON_Print’未定义的引用
collect2: error: ld returned 1 exit status
百度了一下,参照:
https://www.cnblogs.com/oloroso/p/4688426.html
其实不应该出现这个问题,后来直接运行代码:gcc json.c -o json -I ~/cJSON/include/cjson/ -L ~/cJSON/lib -lcjson
上面的问题就消失了。

4.接上,出现问题:
/usr/bin/ld: 找不到 -lcjson
collect2: error: ld returned 1 exit status
找了一下,是缺少libcjson文件,而终端调用这些文件是在指定的文件夹下的,我的在/usr/local/lib/中,于是把/cJSON/lib/中的文件全部移动到指定文件夹下面:
移动文件命令:sudo mv

5.接上,gcc成功了,运行:./json,出现问题:
./json: error while loading shared libraries: libcjson.so.1: cannot open shared object file: No such file or directory
参考:
https://blog.csdn.net/qc530167365/article/details/91491851

出现了原博文中同样的方法,之前不知道怎么操作,就自己瞎解决一通,最后还是绕回来了。。

运行代码:
#sudo gedit /etc/ld.so.conf
#打开了ld.so.conf,在后面添加上/cJSON/lib/的完整路径,关闭。
#使配置立即生效,运行代码:sudo ldconfig

搞定了!
(继续后续学习了。。我的目标是读取json文件,然后处理数据呀,这才哪到哪)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

记录:在ubuntu中以C语言实现json文件读取遇到的问题(1)(说不定会有2) 的相关文章

随机推荐