libnl简介
libnl是为了方便应用程序使用netlink接口而开发的一个库。这个库为原始netlink消息传递以及不同的netlink family专用接口提供了一个统一的接口。libnl2.0的API与libnl1.0的API并不兼容。如果您的应用程序不做相应调整,将可能导致不可用。
移植libnl1.1是hostapd的移植的一部分。hostapd使用的libnl库为1.x版本,2.0版本的API与1.0的并不兼容,故这里移植1.1版本,但2.0移植方式相同。
开发环境
Ubuntu 16.04
arm-linux-gnueabi-gcc version 4.6.3
开发环境不一定是我这配置,只要是Linux操作系统,和ARM对应的交叉工具链就可以。
目标环境
中兴ZX902C(Cotex A9)
内核版本:3.0.1
移植步骤
1.从libnl官网下载libnl-1.1.4源码。
2.执行下面命名解压缩:
tar zxvf libnl-1.1.4.tar.gz
3.进入刚解压的目录cd libnl-1.1.4
,执行下面指令,做相应的配置:
./configure --prefix=$(pwd)/__install --enable-shared --enable-static
其中--prefix=$(pwd)/__install
指定了编译出来的库存放的路径,我一般将其放在当前目录下的__install
目录下。当然,很多人都放在了/usr/local/arm/
目录下,但我认为这样不仅会污染系统文件系统,在管理上也不方便,时间长了也忘记了是哪个库的文件了,用的时候又要重新编译。
4.执行下面命令,编译库:
make CC=/home/public/zx902/arm-linux-gnueabi/bin/arm-linux-gnueabi-gcc
其中CC=/home/public/zx902/arm-linux-gnueabi/bin/arm-linux-gnueabi-gcc
指定交叉工具链。
5.执行下面命令,将编译好的库文件拷贝到指定目录:
make install
如下图所示在当前目录下的__install目录下生成了头文件和库文件
6.include下文件在编译程序的时候会用到,而lib下在程序运行时会用到。故在移植hostapd的时候需要指定include的路径,需要将lib下文件拷贝到开发板中。