Ubus移植到openwrt

ubus移植到openwrt


环境为Ubuntu12.04,交叉编译工具为mipsel-openwrt-linux-gcc

首先参考杰哥的链接:

openwrt ubus 移植到ARM上

http://blog.csdn.net/h893529689/article/details/46873451

openwrt libubox 移植到ARM上

http://blog.csdn.net/h893529689/article/details/46861201

 

弄清楚依赖关系

要编译ubus,需要libubox,libubox又需要json-c。

 

源码为libubox-2014-08-04-dffbc09baf71b294185a36048166d00066d433b5.tar.gz,这个库依赖json-c 库,所以要先移植json-c库(json-c-0.11.tar.gz)。  

json-c移植

具体步骤如下:

1. 解压源码

2. 编辑config.h.in 文件,一定要去掉下面两行内容,红色字体为要删除的

/*Define to rpl_malloc if the replacement function should be used. */

#undefmalloc

/*Define to rpl_realloc if the replacement function should be used. */

#undefrealloc

3.  ./configure --host=mipsel-openwrt-linux  --prefix=/home/yang/lib_mips/json-c

4.  make

5 . make install

执行以上几个步骤,即可生成头文件和库文件到/home/yang/lib_mips/json-c中

  

libubox的移植

由于libubox没有configure之类的,需要用cmake生成Makefile,cmake如果没有,请自行安装。

具体的步骤如下:

1. 解压libubox源码

2. 修改CMakeList.txt文件,在文件最开始处加上如下几句(不要怀疑,就是最开始处):

红色字体为要添加的

#告知当前使用的是交叉编译方式,必须配置

SET(CMAKE_SYSTEM_NAMELinux)

#指定C交叉编译器,必须配置

#或交叉编译器使用绝对地址

SET(CMAKE_C_COMPILER"mipsel-openwrt-linux-gcc")

#指定C++交叉编译器

SET(CMAKE_CXX_COMPILER"mipsel-openwrt-linux-g++")

include_directories("/home/yang/lib_mips/json-c/include/json-c")

include_directories("/home/yang/lib_mips/json-c/include")

link_directories("/home/yang/lib_mips/json-c/lib")

 

3. cmake

4. make

5.修改文件cmake_install.cmake,

红色的要修改的

# Set the installprefix

IF(NOT DEFINEDCMAKE_INSTALL_PREFIX)

  SET(CMAKE_INSTALL_PREFIX"/home/yang/lib_mips/libubox")

6. make install

执行以上几个步骤,即可生成头文件和库文件到/home/yang/lib_mips/libubox

 

好,开始编译ubus

源码为ubus-2014-09-17-4c4f35cf2230d70b9ddd87638ca911e8a563f2f3.tar.gz,具体的步骤如下:

1.解压源码

2.修改CMakeList.txt,

首先,在开头加上如下几句,可以看到它依赖libubox。

红色的为要添加的

#告知当前使用的是交叉编译方式,必须配置

SET(CMAKE_SYSTEM_NAMELinux)

#指定C交叉编译器,必须配置

#或交叉编译器使用绝对地址

SET(CMAKE_C_COMPILER"mipsel-openwrt-linux-gcc")

#指定C++交叉编译器

SET(CMAKE_CXX_COMPILER"mipsel-openwrt-linux-g++")

INCLUDE_DIRECTORIES(/home/yang/lib_mips/json-c/include/json-c)

INCLUDE_DIRECTORIES(/home/yang/lib_mips/json-c/include)

LINK_DIRECTORIES(/home/yang/lib_mips/json-c/lib)

 

INCLUDE_DIRECTORIES(/home/yang/lib_mips/libubox/include/libubox)

INCLUDE_DIRECTORIES(/home/yang/lib_mips/libubox/include)

LINK_DIRECTORIES(/home/yang/lib_mips/libubox/lib)

 

LINK_DIRECTORIES(/home/yang/lib_mips/uiot_libs)

然后,修改以下几行其中的内容

红色的为要修改的

#find_library(jsonNAMES json-c json)

ADD_EXECUTABLE(clicli.c)

SET_TARGET_PROPERTIES(cliPROPERTIES OUTPUT_NAME ubus)

TARGET_LINK_LIBRARIES(cliubus ubox blobmsg_json json-c)

3.cmake .

4.make

5.在源码根目录即可生成库和可执行文件

ubusd 为ubus服务

ubus 为ubus客户端

6. 修改文件cmake_install.cmake

红色的要修改的

# Set the installprefix

IF(NOT DEFINEDCMAKE_INSTALL_PREFIX)

  SET(CMAKE_INSTALL_PREFIX"/home/yang/lib_mips/libubus")

ENDIF(NOT DEFINEDCMAKE_INSTALL_PREFIX)

6. 修改lua目录下的cmake_install.cmake

将其中的/usr/local/lib  全部替换成/home/yang/lib_mips/libubus

7. make install

执行以上几个步骤,即可生成头文件和库文件到/home/yang/lib_mips/libubus中


完成!


 

 


你可能感兴趣的:(Linux,---,Ubuntu12.04)