Docker搭建NDK环境编译osip2、exosip2

2024-01-31

docker版本 软件名称 软件版本 用户角色
23.0.3 NDK Docker 镜像 21e root

附件目录

FROM ubuntu:18.04
MAINTAINER someone

ARG DEBIAN_FRONTEND=noninteractive

RUN  sed -i s@/archive.ubuntu.com/@/mirrors.aliyun.com/@g /etc/apt/sources.list

RUN apt-get update \
    && apt-get -qq install build-essential \
    && apt-get -qq install git 
    
COPY android-ndk-r21e-linux.zip /home
RUN cd /home \
    && apt-get -qq install unzip \
    && unzip android-ndk-r21e-linux.zip \
    && rm -rf android-ndk-r21e-linux.zip
ENV NDK_STANDALONE_TOOLCHAIN="/home/android-ndk-r21e"

COPY cmake-3.12.2-Linux-x86_64.tar.gz /home
RUN cd /home \
    && tar -zxvf cmake-3.12.2-Linux-x86_64.tar.gz \
    && rm -rf cmake-3.12.2-Linux-x86_64.tar.gz \
    && mv cmake-3.12.2-Linux-x86_64 cmake-3.12.2 \
    && ln -sf /home/cmake-3.12.2/bin/* /usr/bin

构建docker镜像

创建目录并上传相应文件至/home/ndk21目录

mkdir -p  ${HOME}/ndk21/src && cd  ${HOME}/ndk21

上传需要编译的osip2、exosip2源文件至/home/ndk21/src目录

目录结构

-rw-rw-r-- 1 chezi008 chezi008 1.2G 1月  30 10:09 android-ndk-r21e-linux.zip
-rw-rw-r-- 1 chezi008 chezi008  34M 1月  30 10:06 cmake-3.12.2-Linux-x86_64.tar.gz
-rw-rw-r-- 1 chezi008 chezi008  917 1月  30 10:06 Dockerfile
drwxrwxr-x 3 chezi008 chezi008 4.0K 1月  30 10:18 docksrc

构建docker镜像

docker build -f Dockerfile --network=host -t ndk:21e .

运行docker容器

docker run --network=host -v ${HOME}/ndk21/src:/home/android -it ndk:21e

设置环境变量

vi ~/.bashrc
export ANDROID_NDK=/home/android-toolchain/android-ndk-r21e
export PATH=$ANDROID_NDK:$PATH
export PATH=$ANDROID_NDK/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin:$PATH

安装一些库

apt install autoconf pkg-config vim

可能会不生效,执行以下命令令其生效

aclocal
automake
autoconf

配置软连接

ln /usr/bin/aclocal /usr/bin/aclocal-1.16
ln /usr/bin/automake /usr/bin/automake-1.16

编译osip2

编译osip导入环境变量

export NDK=/home/android-ndk-r21e
export TOOLCHAIN=$NDK/toolchains/llvm/prebuilt/linux-x86_64
# aarch64/armv7a/x86_64
#export TARGET=armv7a-linux-androideabi
#export TARGET=x86_64-linux-android
export TARGET=aarch64-linux-android
export API=21
 
export AR=$TOOLCHAIN/bin/$TARGET-ar
export AS=$TOOLCHAIN/bin/$TARGET-as
export CC=$TOOLCHAIN/bin/$TARGET$API-clang
export CXX=$TOOLCHAIN/bin/$TARGET$API-clang++
export LD=$TOOLCHAIN/bin/$TARGET-ld
export RANLIB=$TOOLCHAIN/bin/$TARGET-ranlib
export STRIP=$TOOLCHAIN/bin/$TARGET-strip
export CFLAGS="--sysroot=$TOOLCHAIN/sysroot  -DHAVE_TIME_H -DHAVE_FCNTL_H -DHAVE_SYS_SELECT_H -fPIC -DOSIP_MT -DENABLE_TRACE -I$TOOLCHAIN/sysroot/usr/include"

设置可执行权限

cd /home/android/libosip_src-2.5.3/libosip2-5.3.0 &&chmod +x configure &&chmod +x configure.ac

配置命令

./configure --host=aarch64-linux-android --enable-shared --disable-static  --enable-pthread=force  --prefix=/home/android/$TARGET

编译命令

make && make install

编译exosip2

导入环境变量

export OSIP_ROOT=/home/android/$TARGET
export OSIP_CFLAGS="$OSI-IP_ROOT/include "
export OSIP_LIBS="$OSIP_ROOT/lib/libosip2.so $OSIP_ROOT/lib/libosipparser2.so"

设置可执行权限

cd /home/android/libosip_src-2.5.3/libexosip2-5.3.0 &&chmod +x configure &&chmod +x configure.ac

配置命令

./configure --host=aarch64-linux-android   --enable-pthread=force --disable-static --enable-shared PKG_CONFIG_PATH=$OSIP_ROOT/lib/pkgconfig --disable-openssl  --prefix=$OSIP_ROOT 

编译命令

make && make install
androiddockercodeosip

车哥

咸蛋超人一枚.

Docker搭建NDK编译环境

Markdown Syntax Guide