openwrt SDK中使用UCI的C API出现的问题

最近做的工作用openwrt SDK开发,其中有一部分C语言读数据我们用LUA for C API ,直接在头文件中像下面这样写会有问题

#include <uci.h>

编译时会出现错误如下:

xxx.c:(.text+0x1f8): undefined reference to `uci_alloc_context'
xxx.c:(.text+0x210): undefined reference to `uci_lookup_ptr'
xxx.c:(.text+0x228): undefined reference to `uci_perror'
xxx.c:(.text+0x270): undefined reference to `uci_free_context

解决方法是在src/Makefile中添加如下选项:

-luci

同时在package/youapp/Makefile的

define Package/ddns_update

...
...
endef

段中添加如下代码:

DEPENDS:=+libuci

以上为解决方案,同时如果编译遇到怪癖的问题请检查以下两点
1、是否在这份代码中使用root身份做了什么?
PS:如果那样的话貌似编译器都找不到交叉编译的库在哪里,甚至会告诉你openwrt-linux-gcc未找到
2、是否有从别处复制粘贴过来的代码?
PS:如果有的话,请确认一下是不是原来的代码中的Tab到你的代码里变成了4个或者8个空格?

本文章由作者:佐须之男 整理编辑,原文地址: openwrt SDK中使用UCI的C API出现的问题
本站的文章和资源来自互联网或者站长的原创,按照 CC BY -NC -SA 3.0 CN协议发布和共享,转载或引用本站文章应遵循相同协议。如果有侵犯版权的资 源请尽快联系站长,我们会在24h内删除有争议的资源。欢迎大家多多交流,期待共同学习进步。

相关推荐