程序使用uci接口时没有uci.h的解决方法

转自http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=28413840&id=4283561


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


  1. #include <uci.h>

编译时会出现错误如下:

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

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

  1. -luci
同时在package/youapp/Makefile的

  1. define Package/ddns_update

  2. ...
  3. ...
  4. endef

段中添加如下代码:

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

你可能感兴趣的:(openWrt开发)