alsa-lib、alsa-utils、openssl、curl在arm下的交叉编译自动化脚本

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

说明:

此文是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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值