Linux虚拟机编译FFmpeg动态库问题记录

引言:

想尝试在WSL将FFmpeg的源码编译成动态库,中途遇到了些问题,最后解决了,浅浅记录一下。Linux版本18.04,FFmpeg版本6.1,AndroidNDK版本26.3。

问题:

网上的人基本上都是写好脚本文件来执行整个生成动态库的任务,我也是。在通过./configure命令生成Makefile文件的时候,在最前面的位置看到了如下提示。(“****”是我安装android-ndk目录的前缀)

./configure: 5978: ./configure: ****/android-ndk-r26/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android-nm: not found

这个既不是警告也不是错误,我就没注意,最后makefile也成功生成了。但是执行make -j16命令的之后,得到了如下错误

/bin/sh: 1: ****/android-ndk-r26/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android-strip: not found
Makefile:125: recipe for target 'ffmpeg' failed
make: *** [ffmpeg] Error 127

分析:

搞了很久,其实就是找不到个别交叉编译工具了,因为我只设置了C和C++的编译工具。之所以只设置了这两个,是因为我参考的文章用的都是老版本的android-ndk,而我下载的版本较新,从他们提供的ndk交叉编译工具的路径我只找到了C和C++的,并没有找到诸如am、ar、ld等工具,我猜是新版本的ndk更改了工具的位置,或者是换了名字。

解决办法:

仔细看了一下,其实原来的目录“/android-ndk-r26/toolchains/llvm/prebuilt/linux-x86_64/bin/”里面是有上诉那些工具,只是改了名字。原来的前缀是类似“aarch64-linux-android-”这样的,在我这个版本里变成了“llvm-”。

所以将脚本的cross-prefix参数值换成“llvm-”就行了。

--cross-prefix=$TOOLCHAIN/bin/llvm-

  • 6
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值