未定义的引用`json_tokener_parse'

时间:2015-08-02 20:51:19

标签: c openwrt json-c

所有

我在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参数运行编译命令以查看是否正在使用正确的标头,看起来就像我可以找到方法声明 json_tokener_parse 。我不确定我哪里出错了。我即将从Github手动安装,但我真的不想这样做,因为我还必须手动安装其他程序。有没有人有任何建议?

感谢。

1 个答案:

答案 0 :(得分:1)

我自己就遇到过这个问题,如果你明确地链接这些库,它将编译并链接:gcc -g -v -Wall -std=gnu99 -static -L/path/to/json-c-0.9/lib main.c -o test1 -ljson