两周学习ubuntu编译ffmpeg后的建议

2 篇文章 0 订阅
2 篇文章 0 订阅

第一条

网上挺多教程的,新手多看几篇学习流程,以及学习一下里面的编译脚本命令。
特别注意的是:ffmpeg保持一致、ndk保持一致。Ubuntu+Vmware没有特别要求。
不同版本的FFmpeg跟不同的ndk有很多组合,尽量不要自己随便去组合,减少不必要的错误。

第二条

网上很多教程中的编译脚本整体结构差不多,但是有很多坑。每个作者的变量命名可能不一样,然后版本不一样,变量的赋值也不一样。
所以千万不要自己随便去修改,不要把这个作者的脚本跟另外作者的脚本进行混合。要先查找资料,理解变量的意义。

第一条和第二天其实就是尽量保证不出现新的错误,对于新手来说是致命的。

第三条

gcc is unable to create an executable file.
If gcc is a cross-compiler, use the --enable-cross-compile option.
Only do this if you know what cross compiling means.
C compiler test failed.

这个就很奇怪。一开始在编译脚本里面设置:

--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi-

就会报这个错误。但是添加了下面这行脚本就行了。

--cc=$PREBUILT/linux-x86_64/bin/arm-linux-androideabi-gcc \

c编译器是集成在ndk里面的。
奇怪的地方:a)为啥要特别指定c编译器,而且指向的是ndk里面的而不是系统的。
b)第一次成功后去掉这行脚本重新编译又正常了。

编译64位aarch64架构abi为arm64-v8a的so库脚本

ffmpeg3.2.1,ndk版本:android-ndk-r14b-linux-x86_64,两者存放在home/用户名/目录下

#!/bin/bash
echo It is ok

NDK=~/android-ndk-r14b-linux-x86_64/android-ndk-r14b
SYSROOT= N D K / p l a t f o r m s / a n d r o i d − 21 / a r c h − a r m 64 T O O L C H A I N = NDK/platforms/android-21/arch-arm64 TOOLCHAIN= NDK/platforms/android21/archarm64TOOLCHAIN=NDK/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64

CPU=arm64
PREFIX= ( p w d ) / a n d r o i d / (pwd)/android/ (pwd)/android/CPU
#ADDI_CFLAGS="-marm"
ADDI_CFLAGS="-fPIE -pie"
ADDI_LDFLAGS="-fPIE -pie"

function build_one
{
./configure
–prefix=KaTeX parse error: Undefined control sequence: \ at position 8: PREFIX \̲ ̲--enable-shared…TOOLCHAIN/bin/aarch64-linux-android-
–sysroot=$SYSROOT
–target-os=linux
–arch=aarch64 \

–extra-cflags="-0s -fpic"
$ADDITIONAL_CONFIGURE_FLAG

make clean
echo “build $CPU”
make -j4
make install
}

build_one


类似的,下面是abi为armeabi-v7a的脚本


#!/bin/bash
echo It is ok

NDK=~/android-ndk-r14b-linux-x86_64/android-ndk-r14b
SYSROOT= N D K / p l a t f o r m s / a n d r o i d − 19 / a r c h − a r m T O O L C H A I N = NDK/platforms/android-19/arch-arm TOOLCHAIN= NDK/platforms/android19/archarmTOOLCHAIN=NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64

CPU=arm
PREFIX= ( p w d ) / a n d r o i d / (pwd)/android/ (pwd)/android/CPU
ADDI_CFLAGS="-marm"

#export SRC_PATH="~/ffmpeg-3.2.1"

function build_one
{
./configure
–prefix=KaTeX parse error: Undefined control sequence: \ at position 8: PREFIX \̲ ̲--enable-shared…TOOLCHAIN/bin/arm-linux-androideabi-
–target-os=linux
–arch=armeabi-v7a
–sysroot=$SYSROOT \

–extra-cflags="-0s -fpic $ADDI_CFLAGS"
$ADDITIONAL_CONFIGURE_FLAG

make clean
make
make install
}

build_one

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值