libubox配置編譯問題解決?

Tags: 問題, 編譯,

在我編譯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 ,這個沒有問題就不說了

網上關於這個問題的解決方案很少,在這裡把自己碰到的問題貼出來,希望能幫助到大家,多多支援,謝謝!!!

問題, 編譯,
相關問題答案