Ubuntu环境编译x264

1、配置NDK

1.1、 ubuntu下载

wget https://dl.google.com/android/repository/android-ndk-r24-linux.zip

1.2、解压NDK

unzip android-ndk-r24-linux.zip

1.3、配置NDK环境变量

vim /etc/profile

1.4、 在profile文件中添加如下内容

export NDK=/home/ubuntu/ndk/android-ndk-r24
export PATH=$NDK:$PATH

1.5、使用source命令,让配置生效

source /etc/profile

1.6、使用echo打印刚刚配置的NDK路径

echo $NDK

在这里插入图片描述

2、下载源码

git clone https://code.videolan.org/videolan/x264.git

在这里插入图片描述

3、查看编译参数

./configure --help
//标准选项,一般需要配置--prefix
Standard options:
  --prefix=PREFIX          install architecture-independent files in PREFIX[/usr/local]
  --exec-prefix=EPREFIX    install architecture-dependent files in EPREFIX[PREFIX]
  --bindir=DIR             install binaries in DIR [EPREFIX/bin]
  --libdir=DIR             install libs in DIR [EPREFIX/lib]
  --includedir=DIR         install includes in DIR [PREFIX/include]
  --extra-asflags=EASFLAGS add EASFLAGS to ASFLAGS
  --extra-cflags=ECFLAGS   add ECFLAGS to CFLAGS
  --extra-ldflags=ELDFLAGS add ELDFLAGS to LDFLAGS
  --extra-rcflags=ERCFLAGS add ERCFLAGS to RCFLAGS
//配置选项
Configuration options:
  --disable-cli            disable cli   //关闭命令行工具
  --system-libx264         use system libx264 instead of internal
  --enable-shared          build shared library   //编译成动态库 .so
  --enable-static          build static library   //编译成静态库 .a
  --disable-bashcompletion disable installation of bash-completion script
  --enable-bashcompletion  force installation of bash-completion script
  --bashcompletionsdir=DIR install bash-completion script in DIR [auto]
  --disable-opencl         disable OpenCL features
  --disable-gpl            disable GPL-only features
  --disable-thread         disable multithreaded encoding
  --disable-win32thread    disable win32threads (windows only)
  --disable-interlaced     disable interlaced encoding support
  --bit-depth=BIT_DEPTH    set output bit depth (8, 10, all) [all]
  --chroma-format=FORMAT   output chroma format (400, 420, 422, 444, all) [all]
//高级选项
Advanced options:
  --disable-asm            disable platform-specific assembly optimizations
  --enable-lto             enable link-time optimization
  --enable-debug           add -g
  --enable-gprof           add -pg
  --enable-strip           add -s
  --enable-pic             build position-independent code
//交叉编译选项(必选项)
Cross-compilation:
  --host=HOST              build programs to run on HOST
  --cross-prefix=PREFIX    use PREFIX for compilation tools
  --sysroot=SYSROOT        root of cross-build tree
//扩展库支持
External library support:
  --disable-avs            disable avisynth support
  --disable-swscale        disable swscale support
  --disable-lavf           disable libavformat support
  --disable-ffms           disable ffmpegsource support
  --disable-gpac           disable gpac support
  --disable-lsmash         disable lsmash support

4、编译脚本

#!/bin/bash
NDK=/home/ubuntu/ndk/android-ndk-r24
TOOLCHAIN=$NDK/toolchains/llvm/prebuilt/linux-x86_64
export API=21

function build
{
        ./configure \
        --prefix=$PREFIX \
        --disable-cli \
        --disable-asm \
        --enable-shared \
        --enable-pic \
        --host=$HOST \
        --cross-prefix=$CROSS_PREFIX \
        --sysroot=$TOOLCHAIN/sysroot \

        make clean
        make -j8
        make install
}
#armeabi-v7a
PREFIX=./android/armeabi-v7a
HOST=armv7a-linux-android
export TARGET=armv7a-linux-androideabi
export CC=$TOOLCHAIN/bin/$TARGET$API-clang
export CXX=$TOOLCHAIN/bin/$TARGET$API-clang++
export EXTRA_CFLAGS="-O0 -g" # 配置C编译器参数,-O0意思是设置优化等级为0-g指的是生成符号表,这样在Android Native层使用libx264.so中的函数出错的时候可以配合 add2line查找出>是哪一行代码的问题
export EXTRA_CXXFLAGS="-O0 -g" # 配置C++编译器参数,参数含义同上
export CROSS_PREFIX=$TOOLCHAIN/bin/llvm-

build


5、移除编译出来的so库会带有后缀

修改x264的configure文件,如果使用是vim编辑器的话,可以使用/查找“SunOS”,使用n查看下一个位置
在这里插入图片描述

==============================================
找到下面内容
elif [ "$SYS" = "SunOS" ]; then
        echo "SOSUFFIX=so" >> config.mak
        echo "SONAME=libx264.so.$api" >> config.mak
        echo "SOFLAGS=-shared -Wl,-h,$(SONAME) $SOFLAGS" >> config.mak
    else
        echo "SOSUFFIX=so" >> config.mak
        echo "SONAME=libx264.so.$api" >> config.mak
        echo "SOFLAGS=-shared -Wl,-soname,$(SONAME) $SOFLAGS" >> config.mak
==============================================
修改成:
elif [ "$SYS" = "SunOS" ]; then
        echo "SOSUFFIX=so" >> config.mak
        echo "SONAME=libx264.so" >> config.mak
        echo "SOFLAGS=-shared -Wl,-h,$(SONAME) $SOFLAGS" >> config.mak
    else
        echo "SOSUFFIX=so" >> config.mak
        echo "SONAME=libx264.so" >> config.mak
        echo "SOFLAGS=-shared -Wl,-soname,$(SONAME) $SOFLAGS" >> config.mak

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值