在我編譯easycwmp的時候需要庫libubox 和json-c ,我吧json-c直接預設配置編譯安裝後,路徑為/usr/local 下的 標頭檔案在/usr/local/inlude 和 編譯的庫在/usr/local/lib,這個沒有什麼問題,但是在根據手冊編譯libubox的時候就有問題了
手冊是這樣說的,原文如下:
libubox
=======
Get the sources:
git clone git://nbd.name/luci2/libubox.git /opt/git/libubox
cd /opt/git/libubox/
Configure:
cmake CMakeLists.txt -DBUILD_LUA=OFF
Build:
make
Install:
sudo make install
-- checking for modules 'json-c;json'
-- package 'json' not found
-- Configuring done
-- Generating done
-- Build files have been written to: /home/ysj/workspace/tr069/downpackage/libubox
第一步:cmake CMakeLists.txt -DBUILD_LUA=OFF執行後提示如下錯誤
-- checking for modules 'json-c;json'
-- package 'json' not found
-- Configuring done
-- Generating done
-- Build files have been written to: /home/ysj/workspace/tr069/downpackage/libubox
說是沒有找到json包,這個是我們剛才安裝的json,我很少鬱悶這是剛安裝的呀,進到/usr/local/lib 下發現時json-c 確實不是json ,然後開啟檔案
把PKG_CHECK_MODULES(JSONC json-c json)改為PKG_CHECK_MODULES(JSONC json-c)把json去掉
把find_library(json NAMES json-c json)改成find_library(json NAMES json-c)去除json,再執行cmake CMakeLists.txt -DBUILD_LUA=OFF就沒有問題了,如圖
接下來就是make編譯了
make後提示錯誤
/home/ysj/workspace/tr069/downpackage/libubox/blobmsg_json.c:78:2: error: implicit declaration of function 鈏s_error?[-Werror=implicit-function-declaration]
分析:is_error沒有定義,在pc上編譯時也遇到這個問題,我們知道他的定義為
#define is_error(ptr) (ptr == NULL),於是在blobmsg_json.c新增定義
修改後再make編譯又提示錯誤:
這換成了另一個錯誤,不過和剛才的是一個問題,在jshn.c檔案中也新增#define is_error(ptr) (ptr == NULL)就可以了
如圖修改。
在編譯就可以問題了
生成了libubox.a庫,然後預設安裝
make install ,這個沒有問題就不說了
網上關於這個問題的解決方案很少,在這裡把自己碰到的問題貼出來,希望能幫助到大家,多多支援,謝謝!!!