libnl移植到ARM Linux
阿新 • • 發佈:2018-12-22
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下檔案拷貝到開發板中。