NDK交叉编译FFMPEG(5.0以上版本)配置错误:x264 not found using pkg-config

之前的文章 中: Android FFMPEG编解码实践(一):Ubuntu 22.04 NDK编译FFMPEG+libx264_android编译libx264-优快云博客 遗留了一个问题,就是使用5.0版本(现在又出了6.0)的ffmpeg无法将x264编译进去,总是报错: ERROR:x264 not found using pkg-config

后来ffmpeg 6.0发布之后,ndk交叉编译了一下,发现仍然会报这个错误,于是决定深入研究一番。

网上查了一番,全是说PKG_CONFIG_PATH的,而我已经指定了,所以网上资料没啥帮助,没办法只能自己分析了(不能偷懒了)。

打开编译日志,找到错误报告:

 这就清楚了,红色框是错误类型,蓝色框是错误原因:没有找到pthrea库

为什么找不到:ndk编译环境中将pthread库合并到c库中了。

所以有两种方法解决问题:

1.找到编译脚本中使用-lpthread的地方,将其改成-lc。(这得改多少?果断放弃)

2.到ndk中找到交叉编译工具链,复制一个libc,并重命名为libpthread(这个简单)

贴一下交叉编译工具链的路径

### 解决方案 为了在`aarch64-linux-android-clang`环境中成功安装并配置dav1d版本大于等于0.5.0,可以按照如下方法操作: #### 安装依赖项 确保环境中有必要的构建工具和库。对于基于Linux的系统,可以通过包管理器来获取这些依赖项。 ```bash sudo apt-get update && sudo apt-get install -y \ build-essential \ cmake \ git \ pkg-config \ nasm ``` #### 获取Dav1d源码 通过Git克隆官方仓库中的最新稳定分支或标签,这里假设要安装的是v0.5.x系列的一个具体版本。 ```bash git clone https://code.videolan.org/videolan/dav1d.git --branch 0.5.0 dav1d-source cd dav1d-source/ ``` #### 配置交叉编译环境变量 设置好目标平台的相关路径以及工具链前缀等信息以便后续能够顺利进行跨平台编译工作[^2]。 ```bash export ANDROID_NDK=/path/to/your/android_ndk_directory export TOOLCHAIN=$ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64 export TARGET=aarch64-linux-android export API=21 # Android API level supporting arm64 architecture 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 ``` #### 编辑CMakeLists.txt文件(如果必要) 有时可能需要修改项目的`CMakeLists.txt`或其他配置脚本以适应特定的需求,比如指定正确的链接选项或者包含目录[^3]。 #### 构建与安装 利用上述定义好的环境变量来进行实际的编译过程,并将生成的目标文件放置到适当的位置供其他项目调用。 ```bash mkdir build && cd build cmake .. -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK/build/cmake/android.toolchain.cmake \ -DANDROID_ABI=arm64-v8a \ -DANDROID_PLATFORM=android-$API \ -DCMAKE_BUILD_TYPE=Release make -j$(nproc) make install DESTDIR=$(pwd)/install-root ``` 此时应该可以在当前目录下的`install-root/usr/local/lib/pkgconfig/`找到对应的`.pc`文件用于pkg-config检测;同时,在相同路径下还有动态链接库(`*.so`)静态库(`*.a`)可供链接使用。 #### 更新PKG_CONFIG_PATH环境变量 为了让系统的pkg-config命令能识别新安装的库位置,需临时或永久地向`PKG_CONFIG_PATH`追加该路径。 ```bash export PKG_CONFIG_PATH=$PWD/install-root/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH ``` 完成以上步骤之后,尝试再次运行原先遇到问题的应用程序或重新执行configure/make流程,确认是否解决了找不到合适版本dav1d的问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值