wpa_supplicant-2.6交叉编译及错误解决

   最近项目上需要使用wpa_supplicant与wpa_cli相关的工具测试wifi,网上百度了下,好像要下载wpa_supplicant的源码编译,虽然网上已经有人下载交叉编译过,但是每个人的编译环境不一样,那么也会遇到各种各样的问题,那么解决方法也不相同,在交叉编译过程中,也遇到了问题,记录下编译过程及解决方法。


1. libnl交叉编译

解压:tar zxvf libnl-1.1.4.tar.gz
          cd libnl-1.1.4/
 
环境:export PATH=/opt/gcc-linaro-aarch64-linux-gnu-4.9-2014.09_linux/bin$PATH

配置
./configure --prefix=/mnt/nfsroot/frank.yu/android-O/factorytest/wifi/out 

删除:( 这一步一定不能忘记
rm lib/libnl.a
可能导致编译报错( 编译出错Relocations in generic ELF (EM: 62)


编译:make CC=aarch64-linux-gnu-gcc AR=aarch64-linux-gnu-ar LD=aarch64-linux-gnu-ld
          make install

2. openssl-1.0.0交叉编译

解压:tar -xzvf  openssl-1.0.0.tart.gz

配置:

./config no-asm shared --prefix=/mnt/nfsroot/frank.yu/android-O/factorytest/wifi/out

export PATH=$PATH:/opt/gcc-linaro-aarch64-linux-gnu-4.9-2014.09_linux/bin

修改makfile:

(1)修改交叉编译器
CC= gcc
AR= ar $(ARFLAGS) r
RANLIB= /usr/bin/ranlib
NM= nm

修改为:
CC= aarch64-linux-gnu-gcc
AR= aarch64-linux-gnu-ar $(ARFLAGS) r
RANLIB= aarch64-linux-gnu-ranlib
NM= aarch64-linux-gnu-nm

(2)去掉里面的-m64

make make install

备注:
no-asm是在交叉编译过程中不使用汇编代码代码加速编译过程.原因是它的汇编代码是对arm格式不支持的。我试过了,如果没有这个参数,你的交叉编译一定出错。shared生成动态连接库。prefix=路径  就是你的安装目录。


3. wpa_supplicant交叉编译


解压:tar -zxvf wpa_supplicant-2.6.tar.gz
           cd  wpa_supplicant-2.6/wpa_supplicant

拷贝配置:
          cp defconfig .config

 修改.config

CC= aarch64-linux-gnu-gcc -L/mnt/nfsroot/frank.yu/android-O/factorytest/wifi/out/lib
CFLAGS += -I/mnt/nfsroot/frank.yu/android-O/factorytest/wifi/out/include
LIBS += -L/mnt/nfsroot/frank.yu/android-O/factorytest/wifi/out/lib

makefile修改:( 这里是为了生成静态链接的bin文件
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 " $@

wpa_cli: $(OBJS_c)
    $(Q)$(LDO) $(LDFLAGS) -o wpa_cli $(OBJS_c) $(LIBS_c)
    @$(E) "  LD " $@

修改为
wpa_cli: $(OBJS_c)
    $(Q)$(LDO) --static $(LDFLAGS) -o wpa_cli $(OBJS_c) $(LIBS_c)
    @$(E) "  LD " $@

编译:
make

即可生成静态链接的wpa_supplicant/wpa_cli工具,不需要依赖其他的库文件。

猜你喜欢

转载自blog.csdn.net/csdn66_2016/article/details/80368775