1. 程式人生 > >openwrt c語言使用uci

openwrt c語言使用uci

在ubuntu上用eclipse來編譯的C檔案,然後生成bin檔案放在openwrt的機器上執行

想使用c語言來呼叫uci的一些介面來實現讀取和修改配置的工作

ubuntu上安裝uci

參考:https://blog.csdn.net/rainforest_c/article/details/70142987

C語言呼叫uci的說明

參考:https://blog.csdn.net/bytxl/article/details/43761573

https://blog.csdn.net/junglefly/article/details/52415978

然後在eclipse裡面編譯的時候各種報錯

1、提醒uci.h找不到,然後參考:https://blog.csdn.net/x13163303344/article/details/79182787

添加了路徑,錯誤解決;

2、if (UCI_OK != uci_load(ctx, UCI_CONFIG_FILE, &pkg))  這句報錯

應該是UCI_CONFIG_FILE沒有定義,參考這個:#define UCI_CONFDIR "/etc/config",做了對應的路徑定義

3、

  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

搜到這個文章解決的:https://blog.csdn.net/flexman09/article/details/51546277

這個問題現在還沒解決,搜尋後說是2方面的問題

一個是在makefile裡面加-luci,這個因為是用的eclipse開發,搜尋後在這個裡面做了修改

Press Project --> Properties --> C/C++ build --> Settings --> GCC C++ Linker --> 

Libraries

 --> in the "Libraries(-l)" box press the "+" sign --> write "dl" (without the quotes)-> press ok --> clean & rebuild your project.

結果是報了mipsel-openwrt-linux-uclibc/bin/ld: cannot find -luci

不知道是哪裡的問題。

二個說是因為許可權問題,我還在想辦法嘗試看是不是這個問題