咨询在Yocto中编译添加GPL/LGPL版FFmpeg的可行性及许可证问题
关于在Yocto镜像中编译GPL/LGPL版本FFmpeg的问题
当然可以编译GPL/LGPL版本的FFmpeg并将其加入Yocto镜像,而且完全不需要启用商业许可证——下面我来一步步解答你的疑问:
1. 关于PACKAGECONFIG[gpl]的作用
你看到的配方代码PACKAGECONFIG[gpl] = "--enable-gpl,--disable-gpl"正是用来控制FFmpeg是否启用GPL构建的开关:
- 当你启用这个配置项时(比如在
local.conf里添加PACKAGECONFIG:append = " gpl",或者在FFmpeg配方里设置PACKAGECONFIG = "gpl ..."),构建系统会给FFmpeg的configure命令传递--enable-gpl参数,这样FFmpeg就会编译包含GPL许可的组件(比如x264等)。 - 反之,如果不启用,就会使用
--disable-gpl,只编译LGPL许可的基础组件。
2. 处理LICENSE_FLAGS_WHITELIST的提示
你遇到的提示是因为Yocto默认会对带有特定许可证标记的包进行限制,而FFmpeg启用GPL后,配方会将其标记为需要commercial许可证白名单(这里的commercial是Yocto的分类标记,并非指商业许可证,只是因为FFmpeg的GPL组件在Yocto的许可证规则里被归到这个类别)。
要解决这个问题,不需要启用商业许可证,只需要在你的local.conf文件中添加一行:
LICENSE_FLAGS_WHITELIST += "commercial"
这会允许Yocto构建带有该标记的开源GPL/LGPL组件,完全符合你的需求。
3. 额外验证
为了确保你没有启用商业许可证的组件,可以检查FFmpeg配方的LICENSE字段:
- 当启用GPL时,
LICENSE应该包含GPL-2.0-or-later、LGPL-2.1-or-later等开源许可证条目,没有商业相关的许可内容。
内容的提问来源于stack exchange,提问作者ErniBrown




