由于项目的需要,需要把openwrt 上的libubox库移植到ARM上,libubox是openwrt的基础库,是一个事件驱动库,具体的可以到openwrt官网上去了解。
宿主机为 ubuntu 10.04 交叉编译工具链版本为 arm-linux-gcc 4.5.1,目标机为 s3c6410/s5pv210
源码为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. */
#undef malloc
/* Define to rpl_realloc if the replacement function should be used. */
#undef realloc
3. ./configure --host=arm-linux --prefix=/root/softwares/openwrt-a8/json-c
4. make
5 . make install
执行以上几个步骤,即可生成库文件
libubox的移植,由于libubox没有configure之类的,需要用cmake生成Makefile,cmake如果没有,请自行安装。具体的步骤如下:
1.解压libubox源码
2.修改CMakeList.txt文件,在文件最开始处加上如下几句:
#告知当前使用的是交叉编译方式,必须配置
SET(CMAKE_SYSTEM_NAME Linux)
#指定C交叉编译器,必须配置
#或交叉编译器使用绝对地址
SET(CMAKE_C_COMPILER "arm-linux-gcc")
#指定C++交叉编译器
SET(CMAKE_CXX_COMPILER "arm-linux-g++")
#json-c 头文件的路径
include_directories("/root/softwares/openwrt-a8/json-c/include/json-c")
#json-c 库文件路径
link_directories("/root/softwares/openwrt-a8/json-c/lib")
3.make
在源码的根目录即可生成库文件