解决ffmpeg 交叉编译报错 ./configure: line 953: /bin/arm-linux-androideabi-clang: No such file or directory C

问题原因:NDK_HOME/…/bin目录下不存在此arm-linux-androideabi-clang文件
因此只要生成此文件即可解决
打开终端:
python3 $NDK_HOME/build/tools/make_standalone_toolchain.py
–arch arm --api 21 --install-dir /tmp/my-android-toolchain
即可生成my-android-toolchain
my-android-toolchain/bin目录下存在arm-linux-androideabi-clang文件,将其拷贝到NDK_HOME/…/bin下。
再次运行shell脚本,发现即可解决交叉编译报错的问题

### 解决方案 在 Linux 系统中,如果遇到 `libavdevice.so.58` 缺失的问题,可以通过以下方法解决: 1. **确认系统是否已安装相关库** 使用以下命令检查系统中是否存在 `libavdevice.so.58` 文件: ```bash find / -name "libavdevice.so.58" 2>/dev/null ``` 如果未找到该文件,则需要重新安装或编译 FFmpeg[^1]。 2. **通过包管理器安装缺失的库** 对于基于 Debian 的系统(如 Ubuntu),可以使用以下命令安装 FFmpeg 及其依赖项: ```bash sudo apt update sudo apt install ffmpeg libavdevice58 ``` 对于基于 Red Hat 的系统(如 CentOS 或 Fedora),可以使用以下命令安装: ```bash sudo yum install ffmpeg libavdevice ``` 3. **手动编译 FFmpeg** 如果通过包管理器无法解决问题,可以选择手动编译 FFmpeg。以下是编译步骤的概述: - 安装必要的依赖项: ```bash sudo apt install build-essential yasm cmake pkg-config libx264-dev libx265-dev libfdk-aac-dev libvpx-dev libopus-dev libmp3lame-dev libtheora-dev libvorbis-dev libass-dev libfreetype6-dev libwebp-dev zlib1g-dev ``` - 下载 FFmpeg 源码并编译: ```bash wget https://ffmpeg.org/releases/ffmpeg-4.4.4.tar.gz tar -xvzf ffmpeg-4.4.4.tar.gz cd ffmpeg-4.4.4 ./configure --enable-shared --disable-static --enable-libx264 --enable-libx265 --enable-libfdk-aac --enable-libvpx --enable-libopus --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-libass --enable-libfreetype --enable-libwebp --enable-gpl --enable-version3 make -j$(nproc) sudo make install ``` 编译完成后,确保生成的 `libavdevice.so.58` 文件位于正确的路径下(如 `/usr/local/lib` 或 `/usr/lib`)[^3]。 4. **配置动态链接器缓存** 如果手动编译后仍然无法加载共享库,可能需要更新动态链接器缓存: ```bash sudo ldconfig ``` 5. **验证安装** 使用以下命令验证 FFmpeg 是否正常运行以及共享库是否正确加载: ```bash ffmpeg -version ``` ### 示例代码 以下是一个简单的 Python 脚本,用于检测 FFmpeg 是否能够正常调用: ```python import subprocess def check_ffmpeg(): try: result = subprocess.run(['ffmpeg', '-version'], stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True) if "libavdevice" in result.stdout: print("FFmpeg and libavdevice are installed correctly.") else: print("libavdevice is missing or not properly installed.") except FileNotFoundError: print("FFmpeg is not installed.") check_ffmpeg() ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值