shell脚本一键编译WiFi配置需要的工具

#! /bin/bash 
PLATFORM='hi3519dv500'
PLATFORM_COMPILE=aarch64-v01c01-linux-musl-
COMPILE_CC="$PLATFORM_COMPILE"gcc
COMPILE_STRIP="$PLATFORM_COMPILE"strip
COMPILE_AR="$PLATFORM_COMPILE"ar
COMPILE_RANLIB="$PLATFORM_COMPILE"ranlib

INSTALL_DIR=__install_$PLATFORM

ROOT_DIR=$(pwd)
LIBNL_DIR=$ROOT_DIR/libnl-3.2.25
OPENSSL_DIR=$ROOT_DIR/openssl-1.1.1w
HOSTAPD_DIR=$ROOT_DIR/hostapd-2.10
WPA_DIR=$ROOT_DIR/wpa_supplicant-2.10
WIRELESS_TOOLS_DIR=$ROOT_DIR/wireless_tools.29
OUT_PUT_DIR=$ROOT_DIR/output

build_libnl()
{
	cd $ROOT_DIR

	if [ ! -f libnl-3.2.25.tar.gz ];then
		wget https://www.infradead.org/~tgr/libnl/files/libnl-3.2.25.tar.gz
		if [ ! -f libnl-3.2.25.tar.gz ];then
			exit
		fi
	fi

	if [ ! -d libnl-3.2.25 ];then
		tar -xvf libnl-3.2.25.tar.gz
	fi

	cd $LIBNL_DIR
	mkdir -p $INSTALL_DIR
	./configure --host=arm CC=$COMPILE_CC --prefix=$(pwd)/$INSTALL_DIR --enable-static
	make clean
	make -j8
	make install
}

build_openssl()
{
	cd $ROOT_DIR

	if [ ! -f openssl-1.1.1w.tar.gz ];then
		wget https://www.openssl.org/source/old/1.1.1/openssl-1.1.1w.tar.gz
		if [ ! -f openssl-1.1.1w.tar.gz ];then
			exit
		fi
	fi

	if [ ! -d openssl-1.1.1w ];then
		tar -xvf openssl-1.1.1w.tar.gz
	fi

	cd $OPENSSL_DIR
	mkdir -p $INSTALL_DIR

	./config no-asm no-shared no-async --prefix=$PWD/$INSTALL_DIR

	#修改Makefile
	#PLATFORM=linux-x86
	sed -i s/^PLATFORM.*/PLATFORM="linux-armv7"/g ./Makefile
	#CROSS_COMPILE
	sed -i s/^CROSS_COMPILE.*/CROSS_COMPILE="$PLATFORM_COMPILE"/g ./Makefile
	#删除所有的 -m32 -m64选项
	sed -i "s/-m64//g" ./Makefile
	sed -i "s/-m32//g" ./Makefile

	make clean
	make -j8
	make install
}

create_patch()
{
	if [ `grep -c "PLATFORM_NAME" ./Makefile` -eq '0' ];then
		sed -i '5a PLATFORM_NAME='$PLATFORM ./Makefile
	else
		sed -i s/^PLATFORM_NAME.*/PLATFORM_NAME=$PLATFORM/g ./Makefile
	fi

#修改Makefile
cat > patch.txt << EOF
ifeq (\$(PLATFORM_NAME),$PLATFORM)
CC=$COMPILE_CC
CFLAGS += -I$LIBNL_DIR/$INSTALL_DIR/include
LIBS += -L$LIBNL_DIR/$INSTALL_DIR/lib -lnl-3
CFLAGS += -I$OPENSSL_DIR/$INSTALL_DIR/include
LIBS += -L$OPENSSL_DIR/$INSTALL_DIR/lib -lcrypto -lssl
LDFLAGS += -lpthread -lm -ldl
BINDIR := ./$INSTALL_DIR/bin
endif
EOF
	
	if [ `grep -c "$INSTALL_DIR" ./Makefile` -eq '0' ];then
		sed -i '6 r patch.txt' ./Makefile
	fi
}


build_hostapd()
{
	cd $ROOT_DIR

	if [ ! -f hostapd-2.10.tar.gz ];then
        	wget https://w1.fi/releases/hostapd-2.10.tar.gz
		if [ ! -f hostapd-2.10.tar.gz ];then
			exit
		fi
	fi

        if [ ! -d hostapd-2.10 ];then
                tar -xvf hostapd-2.10.tar.gz
        fi

	cd $HOSTAPD_DIR/hostapd
	mkdir -p $INSTALL_DIR
	cp defconfig .config
	export PKG_CONFIG_PATH=$LIBNL_DIR/$INSTALL_DIR/lib/pkgconfig/:$PKG_CONFIG_PATH
	
	create_patch

	make clean
	make -j8
	make install
	$COMPILE_STRIP -g ./$INSTALL_DIR/bin/* 
}

build_wpa_supplicant()
{
	cd $ROOT_DIR

	if [ ! -f wpa_supplicant-2.10.tar.gz ];then
        	wget https://w1.fi/releases/wpa_supplicant-2.10.tar.gz
		if [ ! -f wpa_supplicant-2.10.tar.gz ];then
			exit
		fi
	fi

        if [ ! -d wpa_supplicant-2.10 ];then
                tar -xvf wpa_supplicant-2.10.tar.gz
        fi

	cd $WPA_DIR/wpa_supplicant
	mkdir -p $INSTALL_DIR
	cp defconfig .config

	#edit .config
	#CONFIG_MACSEC=y
	#CONFIG_DRIVER_MACSEC_LINUX=y
	#CONFIG_CTRL_IFACE_DBUS_NEW=y
	#CONFIG_CTRL_IFACE_DBUS_INTRO=y

	sed -i s/^"CONFIG_MACSEC=y".*/"#CONFIG_MACSEC=y"/g .config
	sed -i s/^"CONFIG_DRIVER_MACSEC_LINUX=y".*/"#CONFIG_DRIVER_MACSEC_LINUX=y"/g .config
	sed -i s/^"CONFIG_CTRL_IFACE_DBUS_NEW=y".*/"#CONFIG_CTRL_IFACE_DBUS_NEW=y"/g .config
	sed -i s/^"CONFIG_CTRL_IFACE_DBUS_INTRO=y".*/"#CONFIG_CTRL_IFACE_DBUS_INTRO=y"/g .config

	export PKG_CONFIG_PATH=$LIBNL_DIR/$INSTALL_DIR/lib/pkgconfig/:$PKG_CONFIG_PATH

	create_patch

	make clean
	make -j8
	make install
	$COMPILE_STRIP -g ./$INSTALL_DIR/bin/* 
}

build_wireless_tools()
{
	cd $ROOT_DIR

	if [ ! -f wireless_tools.29.tar.gz ];then
        	wget https://hewlettpackard.github.io/wireless-tools/wireless_tools.29.tar.gz
		if [ ! -f wireless_tools.29.tar.gz ];then
			exit
		fi
	fi

        if [ ! -d wireless_tools.29.tar.gz ];then
                tar -xvf wireless_tools.29.tar.gz
        fi

	cd $WIRELESS_TOOLS_DIR
	mkdir -p $INSTALL_DIR

	sed -i "/PREFIX = /d" ./Makefile 
	sed -i '4a PREFIX = '$WIRELESS_TOOLS_DIR'/'$INSTALL_DIR ./Makefile
	sed -i s/^"CC = .*"/"CC = ""$COMPILE_CC"/g ./Makefile
	sed -i s/^"AR = .*"/"AR = ""$COMPILE_AR"/g ./Makefile
	sed -i s/^"RANLIB = .*"/"RANLIB = ""$COMPILE_RANLIB"/g ./Makefile

	sed -i s/^"# BUILD_STATIC = y".*/"BUILD_STATIC = y"/g ./Makefile

	make clean
	make -j8 
	make install
	$COMPILE_STRIP -g ./$INSTALL_DIR/sbin/*

}

build_all()
{
	build_libnl
	build_openssl
	build_wpa_supplicant
	build_hostapd
	build_wireless_tools
	cd $ROOT_DIR
	mkdir -p $OUT_PUT_DIR/$INSTALL_DIR

	cp $WPA_DIR/wpa_supplicant/$INSTALL_DIR/bin/* $OUT_PUT_DIR/$INSTALL_DIR -rf
	cp $HOSTAPD_DIR/hostapd/$INSTALL_DIR/bin/* $OUT_PUT_DIR/$INSTALL_DIR -rf
	cp $WIRELESS_TOOLS_DIR/$INSTALL_DIR/sbin/* $OUT_PUT_DIR/$INSTALL_DIR -rf
	
}

build_all

  

posted @ 2024-07-19 15:12  被使用的昵称&  阅读(7)  评论(0编辑  收藏  举报