说明:
此文是alsa-lib、alsa-utils、openssl、curl在arm下的交叉编译自动化脚本。
作者把以下文件放到了同一目录下,以实现自动编译的过程。
- arm-cortex_a9-eabi-4.7-eglibc-2.18.tar.gz
- alsa-lib-1.0.25.tar.bz2
- alsa-utils-1.0.25.tar.bz2
- openssl-1.0.2p.tar
- curl-7.51.0.tar
编译的目的是为了一个iFlytek的语音识别库的依赖,分享的原因是因为编译过程中发现了一些问题,但是网上解决的办法都一样,却不是根本,特别是openssl的CROSS_COMPILE和-m64问题导致的需要修改生成Makefile中的编译器名称和链接选项名称(通过分析config和Makefile.org解决了手动修改的问题,但是openssl的脚本写兼容性的确存在问题)。
自动化脚本
#!/bin/sh
# -------------------------------------------------------------------------------
# Filename: build_package.sh
# Revision: 1.0
# Date: 2019/08/06
# Author: aibit
# email: 55239610@qq.com
# Description: build share library for Speech recognition experiment
# Notes:
# -------------------------------------------------------------------------------
# 根据自己的版本名称赋值
COMPILER_PACKAGE=arm-cortex_a9-eabi-4.7-eglibc-2.18
ALSA_LIB_PACKAGE=alsa-lib-1.0.25
ALSA_UTILS_PACKAGE=alsa-utils-1.0.25
CURL_PACKAGE=curl-7.51.0
OPENSSL_PACKAGE=openssl-1.0.2p
# 当前路径创建target做为安装目录
INSTALL_DIR=${PWD}/target
if [ ! -d ${INSTALL_DIR} ];then
mkdir -p ${INSTALL_DIR}
fi
# 解压编译器
if [ ! -d ${COMPILER_PACKAGE} ];then
tar xzvf ${COMPILER_PACKAGE}.tar.gz
fi
# 设置环境变量
export CC=${PWD}/${COMPILER_PACKAGE}/bin/arm-cortex_a9-linux-gnueabi-gcc
export CXX=${PWD}/${COMPILER_PACKAGE}/bin/arm-cortex_a9-linux-gnueabi-g++
export LD=${PWD}/${COMPILER_PACKAGE}/bin/arm-cortex_a9-linux-gnueabi-ld
export RANLIB=${PWD}/${COMPILER_PACKAGE}/bin/arm-cortex_a9-linux-gnueabi-ranlib
export STRIP=${PWD}/${COMPILER_PACKAGE}/bin/arm-cortex_a9-linux-gnueabi-strip
export PATH=$PATH:${PWD}/${COMPILER_PACKAGE}/bin
# 交叉编译alsa-lib库到target目录下
if [ ! -d ${ALSA_LIB_PACKAGE} ];then
tar xjvf ${ALSA_LIB_PACKAGE}.tar.bz2
fi
if [ ! -e ${INSTALL_DIR}/lib/libasound.so ];then
cd ${ALSA_LIB_PACKAGE}
./configure \
--host=arm-cortex_a9-linux-gnueabi \
--prefix=${INSTALL_DIR} \
--with-alsa-devdir=/dev \
--disable-static --enable-shared --disable-python
make && make install
cd -
fi
# 交叉编译alsa-utils库到target目录下
if [ ! -d ${ALSA_UTILS_PACKAGE} ];then
tar xjvf ${ALSA_UTILS_PACKAGE}.tar.bz2
fi
if [ ! -e ${INSTALL_DIR}/bin/aplay ];then
cd ${ALSA_UTILS_PACKAGE}
./configure --host=arm-cortex_a9-linux-gnueabi --prefix=${INSTALL_DIR} \
CFLAGS="-I${INSTALL_DIR}/include" LDFLAGS="-L${INSTALL_DIR}/lib -lasound" \
--disable-alsamixer --disable-xmlto --with-alsa-inc-prefix=${INSTALL_DIR}/include
make && sudo make install
cd -
fi
# 交叉编译openssl库到target目录下
if [ ! -d ${OPENSSL_PACKAGE} ];then
tar xvf ${OPENSSL_PACKAGE}.tar
fi
if [ ! -e ${INSTALL_DIR}/lib/libasound.so ];then
export CROSS_COMPILE=${PWD}/${COMPILER_PACKAGE}/bin/arm-cortex_a9-linux-gnueabi- CC=gcc
cd ${OPENSSL_PACKAGE}
if [ -e Makefile ];then
make clean && make distclean
fi
./config no-asm shared --prefix=${INSTALL_DIR}
sed -i s/-m64//g Makefile
make && make install
cd -
fi
# 交叉编译curl库到target目录下
if [ ! -d ${CURL_PACKAGE} ];then
tar xvf ${CURL_PACKAGE}.tar
fi
if [ ! -e ${INSTALL_DIR}/lib/libcurl.so ];then
cd ${CURL_PACKAGE}
./configure --host=arm-cortex_a9-linux-gnueabi --prefix=${INSTALL_DIR} \
CPPFLAGS="-I${INSTALL_DIR}/include" \
LDFLAGS="-L${INSTALL_DIR}/lib -dl -lssl -lcrypto" --with-ssl
make && sudo make install
cd -
fi

本文介绍了一种用于ARM平台的交叉编译自动化脚本,该脚本能够自动编译alsa-lib、alsa-utils、openssl和curl等库,旨在简化iFlytek语音识别库的依赖构建过程。脚本详细展示了环境变量设置、编译配置和安装流程。

975

被折叠的 条评论
为什么被折叠?



