全部。
在OpenWRT linux发行版上使用JSON-C库时遇到问题。
为了测试它,我做了一个简单的程序。
#include <json/json.h>
int main() {
char * string = "{\"name\" : \"joys of programming\"}";
json_object * jobj = json_tokener_parse(string);
}
然后用下面的命令编译它。
gcc test.c -o test -ljson-c
但是,我得到了以下错误。
In function `main':
test.c:(.text+0x2c): undefined reference to `json_tokener_parse'
test.c:(.text+0x38): undefined reference to `json_tokener_parse'
collect2: ld returned 1 exit status
我甚至用下面的命令编译了它,但是仍然没有成功。
gcc -ljson-c test.c -o test
然后我试图在编译时添加-L参数,但仍然没有成功。
gcc test.c -o test -L/usr/lib -ljson-c
这个OpenWRT发行版使用opkg作为其包安装程序,下面是我运行opkg install libjson-c时显示的内容。
Package libjson-c (0.11-2) installed in root is up to date.
我甚至用-E参数运行了compile命令,以查看是否使用了正确的头文件,看起来就像我可以找到方法声明json_tokener_parse一样。我真的不知道我错在哪里。我将要从Github手动安装,但我不想这么做,因为我还需要手动安装其他程序。有人有什么建议吗?
谢谢。
最佳答案
我自己也遇到了这个问题,如果你显式地链接库,它将编译并链接:gcc -g -v -Wall -std=gnu99 -static -L/path/to/json-c-0.9/lib main.c -o test1 -ljson
关于c - 未定义对json_tokener_parse的引用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31776457/