hisi平台Wireless_tools、libnl、wpa_supplicant和openssl移植
一、Wireless_tools移植
1.当前使用wireless_tools_29
下载地址:https://hewlettpackard.github.io/wireless-tools/wireless_tools.29.tar.gz
2.解压下载的源码到指定目录。
tar -xvf wireless_tools.29.tar.gz
3.进入根目录,根据自己的平台更改Makefile文件,我当前使用hisiv300的如下:
设置安装路径:PREFIX = ./ #当前路径
#CC = gcc
CC = arm-hisiv300-linux-gcc
AR = arm
RANLIB = arm-hisiv300-linux-ranlib
4.编译
make clean
make
make install
这样编译后的工具就会安装到指定的PREFIX目录。
二、openssl移植
openssl 下载地址:ftp://ftp.openssl.org/source/old/0.9.x/ 当然你可以根据自己的需求下载最新版本。
wpa_supplicant官方网站进行下载:http://w1.fi/releases/
当前我使用openssl-0.9.8za和wpa_supplicant-2.5
分别使用tar -xvf openssl-0.9.8za.tar.gz 和tar -xvf wpa_supplicant-2.5.tar.gz 解压到当前路径
1.打补丁
cp wpa_supplicant-2.5/patches/openssl-0.9.8za-tls-extensions.patch openssl-0.9.8za/
cd openssl-0.9.8za/
patch -p1 < openssl-0.9.8za-tls-extensions.patch
结果显示
patching file ssl/s3_clnt.c
patching file ssl/s3_srvr.c
patching file ssl/ssl.h
patching file ssl/ssl_err.c
patching file ssl/ssl_sess.c
patching file ssl/t1_lib.c
patching file ssl/tls1.h
patching file util/ssleay.num
./config --prefix=$PWD/out no-asm shared
no-asm是在交叉编译过程中不使用汇编代码代码加速编译过程.原因是它的汇编代码是对arm格式不支持的
2.修改Makefile
#CC= gcc
#CFLAG= -fPIC -DOPENSSL_PIC -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -Wa,--noexecstack -DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall
CC= arm-hisiv300-linux-gcc
CFLAG= -fPIC -DOPENSSL_PIC -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -march=armv5 -DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall
DEPFLAG= -DOPENSSL_NO_CAMELLIA -DOPENSSL_NO_CAPIENG -DOPENSSL_NO_CMS -DOPENSSL_NO_GMP -DOPENSSL_NO_JPAKE -DOPENSSL_NO_MDC2 -DOPENSSL_NO_RC5 -DOPENSSL_NO_RFC3779 -DOPENSSL_NO_SEED
PEX_LIBS=
EX_LIBS= -ldl
EXE_EXT=
ARFLAGS=
#AR= ar $(ARFLAGS) r
#ARD=ar $(ARFLAGS) d
#RANLIB= /usr/bin/ranlib
AR = arm-hisiv300-linux-ar $(ARFLAGS) r
RANLIB= arm-hisiv300-linux-ranlib
NM= arm-hisiv300-linux-nm
PERL= /usr/bin/perl
TAR= tar
TARFLAGS= --no-recursion --record-size=10240
MAKEDEPPROG= gcc
LIBDIR=lib
说明:
安装路径INSTALL_PREFIX=
INSTALLTOP=/home/lzq/hi3520d/tools/openssl-0.9.8za/out
3.编译安装
make clean
make
make install
4.安装出错解决:
smime.pod around line 272: Expected text after =item, not a number
smime.pod around line 276: Expected text after =item, not a number
smime.pod around line 280: Expected text after =item, not a number
smime.pod around line 285: Expected text after =item, not a number
smime.pod around line 289: Expected text after =item, not a number
POD document had syntax errors at /usr/bin/pod2man line 71.
解决方法:
删除 pod2man文件:sudo rm /usr/bin/pod2man
三、libnl移植
下载地址:http://www.infradead.org/~tgr/libnl/
我使用的版本为libnl-1.1.tar.gz
tar -xvf libnl-1.1.tar.gz
cd libnl-1.1/
./configure CC=arm-hisiv300-linux-gcc --prefix=$PWD/out --host=arm
make
make install
安装路径默认在当前的 out文件夹。
四、wpa_supplicant移植
1.进入目录
cd wpa_supplicant-2.5/wpa_supplicant/
cp defconfig .config
2.更改Makefile
CC := arm-hisiv300-linux-gcc -L ../../openssl-0.9.8za/out/lib
ifndef CC
CC=gcc
endif
添加相关链接库
CFLAGS += -I ../../libnl-1.1/out/include
CFLAGS += -I ../../openssl-0.9.8za/out/include
LIBS += -L ../../libnl-1.1/out/lib -lnl
LIBS += -L ../../openssl-0.9.8za/out/lib -lssl
#安装路径
LIBDIR := ../out/lib/
INCDIR := ../out/include/
BINDIR := ../out/sbin/
#export LIBDIR ?= /usr/local/lib/
#export INCDIR ?= /usr/local/include/
#export BINDIR ?= /usr/local/sbin/
PKG_CONFIG ?= pkg-config
3.编译安装
make clean
make
make install