1. 程式人生 > >libnl移植到ARM Linux

libnl移植到ARM Linux

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下檔案拷貝到開發板中。