天天看點

wpa_supplicant-2.6交叉編譯

編譯wpa_supplicant時經常會遇到一些連結問題,導緻編譯失敗,下面介紹一種方法,可以直接make出wpa工具。

wpa_supplicant編譯依賴openssl的庫,而openssl又依賴libnl的庫,為友善編譯,将wpa_supplicant、openssl、libnl源碼放到同一級目錄下,編寫makefile,依次編譯libnl、openssl,最終編譯wpa_supplicant。

準備工作:

wpa_supplicant、openssl、libnl的源碼:

wpa_suppliant: http://hostap.epitest.fi/releases/wpa_supplicant-2.6.tar.gz

openssl:https://www.openssl.org/source/old/1.0.1/openssl-1.0.1s.tar.gz

libnl:https://www.infradead.org/~tgr/libnl/files/libnl-1.1.4.tar.gz

交叉編譯器:選擇自己用的交叉編譯器,我用的是arm-none-linux-gnueabi-

重點來了:Makefile

MAKE := make -w
PWD := $(shell pwd)

PATH := 你的jdk環境
PATH := $(PATH):$(PWD)/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin  // 交叉編譯器路徑
CROSS_COMPILE :=   //暫時清空.bashrc中指定的環境變量,避免沖突

SYSROOT := $(PWD)/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/arm-fsl-linux-gnueabi/multi-libs/default

LIBNL_DIR = $(PWD)/libnl-1.1.4
OPENSSL_DIR = $(PWD)/openssl-1.0.1s
WPA_SUPPLICANT_DIR = $(PWD)/wpa_supplicant-2.6/wpa_supplicant

all:wpa_supplicant

wpa_supplicant:openssl libnl
        cp -rf $(WPA_SUPPLICANT_DIR)/defconfig $(WPA_SUPPLICANT_DIR)/.config
        $(MAKE) -C $(WPA_SUPPLICANT_DIR) CC=arm-none-linux-gnueabi-gcc
        cp -rf $(WPA_SUPPLICANT_DIR)/wpa_cli $(WPA_SUPPLICANT_DIR)/wpa_supplicant $(PWD)

openssl:
        if [ ! -f $(OPENSSL_DIR)/config.log ];then cd $(OPENSSL_DIR) && ./config no-asm --prefix=$(SYSROOT)/usr os/compiler:arm-none-linux-gnueabi-gcc;fi
        $(MAKE) -C $(OPENSSL_DIR)
        arm-none-linux-gnueabi-gcc -shared -o libcrypto.so $(OPENSSL_DIR)/libcrypto.a
        arm-none-linux-gnueabi-gcc -shared -o libssl.so $(OPENSSL_DIR)/libssl.a
        $(MAKE) -C $(OPENSSL_DIR) install DESTDIR=$(SYSROOT)
        cp -rf libcrypto.so libssl.so $(SYSROOT)/usr/lib

libnl:
        if [ ! -f $(LIBNL_DIR)/config.log ];then cd $(LIBNL_DIR) && ./configure --prefix=/usr --host=arm-none-linux-gnueabi;fi
        $(MAKE) -C $(LIBNL_DIR)
        $(MAKE) -C $(LIBNL_DIR) install DESTDIR=$(SYSROOT)

clean:
        rm -rf *.so *.so.* wpa_cli wpa_supplicant
           

尊重原創,轉載請說明出處