zoukankan      html  css  js  c++  java
  • wpa_supplicant 的编译

    1. wpa_supplicant的编译需要用到的3个源码包, 分别是wpa_supplicant, openssl, libnl

    wpa_supplicant的下载地址:http://w1.fi/releases/

    openssl的下载地址:https://www.openssl.org/so

    libnl的下载地址:http://www.infradead.org/~tgr/libnl/files/

    2. x86编译

    后面编译 wpa_supplicant 2.6时报错,"can't find -lnl",所以编译 libnl-1.1.4。
    ./configure --prefix=/home/henry/wpa/libnl-1.1.4/out

    先装依赖库

    sudo apt-get install bison

    sudo apt-get install flex

    ./configure --prefix=/home/henry/wpa/libnl-1.1.4/out

    make
    make check
    make install
    // to install the API documentation:
    mkdir -vp /home/henry/wpa/libnl-1.1.4/out/libnl/doc
    tar -xf ../libnl-doc-1.1.4.tar.gz --strip-components=1 --no-same-owner -C /home/henry/wpa/libnl-1.1.4/out/libnl/doc

    openssl的编译:

    ./config shared --prefix=/home/henry/wpa/openssl-1.1.1/out/ssl/prefix --openssldir=/home/henry/wpa/openssl-1.1.1/out/ssl/configuration
    make
    make test
    make install

    wpa_supplicant的编译

    cd ~/wpa/wpa_supplicant-2.6/wpa_supplicant
    cp defconfig .config
    修改配置文件 .config,在"#Uncomment following two linee and fix..."下增加如下语句,用来添加openssl和libnl的头文件和库文件目录,更新编译链接环境变量:
    CFLAGS += -I/home/henry/wpa/openssl-1.1.1/out/prefix/include
    CFLAGS += -I/home/henry/wpa/libnl-1.1.4/out/include
    LIBS += -L/home/henry/wpa/openssl-1.1.1/out/prefix/lib
    LIBS += -L/home/henry/wpa/libnl-1.1.4/out/lib

    LIBS_p += -L/home/henry/wpa/openssl-1.1.1/out/ssl/prefix/lib  (否则找不到libcripto)

    执行 make 进行编译,成功后生成三个目标文件 wpa_supplicant, wpa_cli, wpa_passphrase 。

    3. armv7交叉编译

    3.1 需要下载如下包:

    libnl-1.1.4.tar.gz

    openssl-1.0.2r.tar.gz

    wpa_supplicant-2.6.tar.gz

    3.2 设置arm编译工具的PATH

    3.3 先装依赖库

    sudo apt-get install bison

    sudo apt-get install flex

    3.4 编译libnl1.1.4

    cd lib

    rm -f libnl.a  =========>作者上传了x86的库,如不删除,编译wpa_supplicant时会报libnl.a的格式错误, 可以用objdump -a libnl.a查看库信息

    make mylibs ========>建立prefix 目录

    ./configure --prefix=/home/cdc/wpa_supplicant/libnl-1.1.4/mylibs CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++ AR=arm-linux-gnueabihf-ar LD=arm-linux-gnueabihf-ld -host=arm-linux

    make

    make install

    3.5 编译openssl1.0.2r

    mkdir mylibs  ========>建立prefix 目录

    ./config no-asm shared --prefix=/home/cdc/wpa_supplicant/openssl-1.0.2r/mylibs

    vi Makefile

    PLATFORM=mips-linux-gnu

    CONFIGURE_ARGS=mips-linux-gnu ...

    CC=$(CROSS_COMPILE)mips-linux-gnu-gcc
    CXX=$(CROSS_COMPILE)mips-linux-gnu-g++

    CFLAGS=-Wall -g -EL -O3 -fomit-frame-pointer
    CXXFLAGS=-Wall -g -EL -O3

    MAKEDEPEND=$(CROSS_COMPILE)mips-linux-gnu-gcc

    AR=$(CROSS_COMPILE)mips-linux-gnu-ar

    RANLIB=$(CROSS_COMPILE)mips-linux-gnu-ranlib

    删除 -m32  -m64 选项

    3.6 编译及安装

    make

    make install

    3.7 wpa_supplicant编译

    cd  wpa_supplicant-2.6/wpa_supplicant
    cp defconfig .config

    vi .config

    # Uncomment following two lines and fix the paths if you have installed OpenSSL

    # or GnuTLS in non-default location
    CFLAGS += -I/home/cdc/wpa_supplicant/inc  ==============>把前面编译的libnl, openssl时,在mylibs下生成的include文件夹下所有文件copy到这个目录
    LIBS += -L/home/cdc/wpa_supplicant/lib  ===============>把前面编译的libnl, openssl时,在mylibs下生成的lib文件夹下所有文件copy到这个目录

    vi Makefile

    vi Makefile, --static是为了静态编译,不用动态库
    wpa_supplicant: $(BCHECK) $(OBJS) $(EXTRA_progs)
            $(Q)$(LDO) $(LDFLAGS) -o wpa_supplicant $(OBJS) $(LIBS) $(EXTRALIBS)
            @$(E) "  LD " $@

    =============>
    wpa_supplicant: $(BCHECK) $(OBJS) $(EXTRA_progs)
            $(Q)$(LDO) --static $(LDFLAGS) -o wpa_supplicant $(OBJS) $(LIBS) $(EXTRALIBS) -lm -lpthread
            @$(E) "  LD " $@

  • 相关阅读:
    用PYTHON修改电脑IP地址
    PYTHON os 模块详解
    django 笔记
    PYTHON实战目录
    群晖PLEX设置方法
    jellin docker 群晖设置方法转自先生
    PYTHON ftp 上传方法
    打包驱动EXSI
    我的PYTHON老师ALEX
    安装WHELL
  • 原文地址:https://www.cnblogs.com/henryliublog/p/9902021.html
Copyright © 2011-2022 走看看