ffmpeg学习笔记1 编译x264(Win10+android-ndk-r22)

本文详述了在Windows10上使用MSYS2和Android NDK编译x264编码器的过程,包括安装MSYS2、下载NDK和x264源码,以及编写和执行编译脚本。编译完成后,针对armv8-a架构进行了动态库的生成。在编译过程中可能遇到找不到-lpthread的问题,解决方案是创建一个空的libpthread.a文件。最后,作者仅编译了arm64-v8a版本,鼓励读者尝试其他架构。
摘要由CSDN通过智能技术生成

前言

笔者尝试在win10下,编译android版本的x264,第一次尝试这样做,为后面编译ffmpeg做准备

一、安装MSYS2

下载地址:MSYS2

安装完成后执行如下命令

pacman -S --needed base-devel mingw-w64-x86_64-toolchain

 安装所需要的工具链

二、下载android NDK

下载地址:不受支持的 NDK 下载  |  Android NDK  |  Android Developers

笔者没有单独下载,因为在配置Qt for android时,已经自动下载完成了

三、下载x264源码

下载地址:x264, the best H.264/AVC encoder - VideoLAN

下载完成后,解压到一个没有中文、空格的目录中

四、编译源码

1.编写编译脚本,如下所示

#!/bin/bash
#NDK的位置
NDK=E:/software/android/commandlinetools-win-6609375_latest/ndk/22.1.7171670
HOST_TAG=windows-x86_64
TOOLCHAIN=$NDK/toolchains/llvm/prebuilt/$HOST_TAG

//安装的位置
ANDROID_LIB_PATH="$(pwd)/install"

API=24

function build_android_arm
{
echo "build for android $CPU"
./configure \
 --host=$HOST \
 --enable-shared \
 --enable-static \
 --prefix="$ANDROID_LIB_PATH/$CPU" \
 --enable-pic \
 --enable-strip \
 --extra-cflags="-fPIC"

make clean
make -j4
make install
echo "building for android $CPU completed"
}

CPU=armv8-a
HOST=aarch64-linux-android
#export AR=$TOOLCHAIN/bin/aarch64-linux-android-ar
#export AS=$TOOLCHAIN/bin/aarch64-linux-android-as
#export LD=$TOOLCHAIN/bin/aarch64-linux-android-ld
#export RANLIB=$TOOLCHAIN/bin/aarch64-linux-android-ranlib
#export STRIP=$TOOLCHAIN/bin/aarch64-linux-android-strip
export CC=$TOOLCHAIN/bin/aarch64-linux-android$API-clang
export CXX=$TOOLCHAIN/bin/aarch64-linux-android$API-clang++
build_android_arm

 读者需要自己替换对应目录

笔者使用的api是24

将完成的脚本保存为build.sh,放到源码目录

2.编译

打开mingw64,跳转到源码目录中,运行脚本

sh build.sh

笔者大约等待了20min, 得到编译后的结果

注:

如果和笔者一样,编译时选择生成动态库,那修改下Makefile文件,把创建动态库链接的命令去掉,否则无法正常安装

已编译完成的动、静态库

五、可能会遇到的问题

1.ld: error: cannot find -lpthread

原因:在低版本的编译器中libpthread.a是单独存在的,高版本的编译器将pthread放入libc库中了,而程序还是找libpthread.a库

解决方法:

修改Makefile文件,或直接找到对应sysroot目录,建个空的libpthread.a文件就可以

 

后记

笔者只编译了arm64-v8a的版本,其他版本笔者没有尝试,感兴趣的小伙伴可以自己尝试下

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

꧁白杨树下꧂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值