使用OpenWrt编译生成的SDK编译调用uci库的程序报错

如题,使用openwrt编译生成的SDK编译调用uci库的c文件时报错, 测试的c文件如下:
/*********$(SDK_DIR)/package/uci_test/src/uci_test.c****************/
#include <stdio.h>
#include <uci.h>
int main(int argc, char *argv[])
{
    struct uci_context *ctx_uci = NULL;
    ctx_uci = uci_alloc_context();
    if (!ctx_uci) {
        fprintf(stderr, "Out of memory\n");
        return UCI_ERR_MEM;
    }
}
/*********$(SDK_DIR)/package/uci_test/src/Makefile****************/
SRC:= uci_test.c
OBJ:= uci_test.o
EXE:= uci_test

$(EXE):$(OBJ)  
    $(CC) $(LDFLAGS) $(OBJ) -o $(EXE)
 
$(OBJ):$(SRC)  
    $(CC) $(CFLAGS) -c $(SRC)
 
clean:
    rm -rf *.o $(EXE)
/*********$(SDK_DIR)/package/uci_test/Makefile****************/
include $(TOPDIR)/rules.mk

PKG_NAME:=uci_test
PKG_RELEASE:=1
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)

include $(INCLUDE_DIR)/package.mk

define Package/uci_test
    SECTION:=utils
    CATEGORY:=Utilities
    TITLE:=uci_test -- prints a snarky message
    DEPENDS:=+libubox +libuci
endef

define Package/uci_test/description
    It's uci_test demo.
endef

define Build/Prepare
    echo "Here is Package/Prepare"
    mkdir -p $(PKG_BUILD_DIR)
    $(CP) ./src/* $(PKG_BUILD_DIR)/
endef

define Package/uci_test/install
    echo "Here is Package/install"
    $(INSTALL_DIR) $(1)/bin
    $(INSTALL_BIN) $(PKG_BUILD_DIR)/uci_test $(1)/bin/
endef
    
$(eval $(call BuildPackage,uci_test))
/*****************************************************************************************/
在$(SDK_DIR)/staging_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/usr/include/uci.h中有
extern struct uci_context *uci_alloc_context(void);
但是编译时报错undefined reference to `uci_alloc_context'。
PS:在这个工程里测试libubox中的相关函数是可以编译通过的
请大神给指点下问题出在哪里,谢谢
已邀请:

xzmu - 10w

赞同来自:

因为你没链接uci的库进去。改改CFLAGS或者说改改gcc的参数就好了

要回复问题请先登录注册