compilation - 如何使用 libmp3lame 构建 LGPL 版本的 ffmpeg?

标签 compilation ffmpeg cross-compiling

我的任务是将 mp3 文件 + 一些图片转换为 mp4 视频。为此,我使用的是 ffmpeg 库 + libmp3lame,但我必须使用 LGPL 版本。所以我试图用适当的标志来构建它,因为我在互联网上找不到它。

而且我还需要一个win64版本,但我必须在Ubuntu VM(vagrant)上构建它。

这是我的脚本(来自 vagrantfile 的一部分):

 sudo apt-get install -y mingw-w64
 sudo apt-get install -y git     

 wget http://downloads.sourceforge.net/project/lame/lame/3.99/lame-3.99.5.tar.gz
 tar xzvf lame-3.99.5.tar.gz
 cd lame-3.99.5
 ./configure --host=x86_64-w64-mingw32 --prefix="/vagrant/ffmpeg_build" --disable-shared --enable-static
 make
 make install

 cd /vagrant

 git clone https://github.com/FFmpeg/FFmpeg.git              
 cd FFmpeg/  
 ./configure --prefix="/vagrant/ffmpeg_build" --arch=x86_64 --cross-prefix=x86_64-w64-mingw32- --target-os=mingw32 --enable-static --disable-shared --disable-debug --disable-yasm --disable-w32threads --disable-network --extra-libs=-static --extra-cflags="-I/vagrant/ffmpeg_build/include" --extra-ldflags="-L/vagrant/ffmpeg_build/lib"        
 make

不幸的是,在构建过程的最后,我得到了
==> default: CC ffmpeg_opt.o
==> default: CC ffmpeg_filter.o
==> default: CC ffmpeg_dxva2.o
==> default: LD ffmpeg_g.exe
==> default: CP ffmpeg.exe
==> default: STRIP      ffmpeg.exe
==> default: x86_64-w64-mingw32-strip
==> default: :stgaDQCc
==> default: : Protocol error
==> default: make:
==> default: *** [ffmpeg.exe] Error 1

我的配置缺少什么?提前致谢!

最佳答案

您正在虚拟机中构建,因此您正在构建的位置可能是虚拟机和主机之间的共享空间,这可能会在运行 strip 时导致“协议(protocol)错误”(参见例如 here)。尝试取消共享构建文件夹或在其他未共享的位置构建。

关于compilation - 如何使用 libmp3lame 构建 LGPL 版本的 ffmpeg?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31457426/

相关文章:

debugging - 在 Linux 上使用 -g 构建 OpenSSL 进行调试

memory - FFMPEG 吃掉所有内存

bash ffmpeg 在文件名中查找和空格

c++ - 使用 ffmpeg 的非常简单的 qt 应用程序中的段错误

linux - 如何交叉编译 arm64 的 lttng-modules?

c - C/C++ 解析器如何工作?

c - windows下编译win32 api c程序实例(命令行方式)

通过改变宏的值进行条件编译

linux - Cygwin GCC 交叉编译二进制文件?

c++ - POD 与非 POD 情况下生成的构造函数