我的问题在前面是“我有新的yasm,我认为x264应该很酷,那么为什么x264不酷?”使用YASM构建x264:未通过ASM检查
由于某些原因,我正在按照指南here构建一个包含从头开始ffmpeg构建的CentOS docker镜像(基于centos:latest)。这是一个很好的指导,之前它对我很有用,所以我对此感觉很好。
今天我打一个瓶颈上libx264构建点:具体地讲,我说
PKG_CONFIG_PATH="/tmp/ffmpeg_build/lib/pkgconfig" \
./configure \
--prefix="/tmp/ffmpeg_build" \
--bindir="/tmp/bin" \
--enable-static
而我得到的答复回来
发现没有汇编
最低版本是nasm-2.13
如果您确实想编译时不使用asm,请使用--disable-asm进行配置。
这是意想不到的。我有一个习惯,我的理解是:1)在那里做nasm做的事情,但更好,2)成为雏菊新鲜最现代的版本,因为我在一个小时前从它的回购中拉出它,并且构建它五十九分钟前。值得一提的是,自从指令要求之后,nasm也是在盒子上,但是它低于他们规定的版本(即它是“2014年6月9日编译的NASM版本2.10.07”)
所以看起来好像yasm不是被发现。还有另外一个StackExchange question提到了这个问题,它出现了一个路径问题。所以,我添加了yasm到我的路径,如下所示:
PATH=/tmp/ffmpeg_sources/yasm:$PATH \
PKG_CONFIG_PATH="/tmp/ffmpeg_build/lib/pkgconfig" \
./configure
...etc
这还是给了发现 - 没有汇编问题。作为最后一个困惑的手段,我明确地告诉了脚本我想为变量$ AS使用什么,因为基于我对配置的快速浏览,看起来像yasm/nasm应该去的地方。该命令将变为:
AS=`which yasm`
PKG_CONFIG_PATH="/tmp/ffmpeg_build/lib/pkgconfig" \
./configure
...etc
这至少给了
找到YASM 1.3.0
最低版本NASM 2.13
如果你真的想不ASM编译,配置用--disable-asm。
看在我的config.log看到以下内容:
checking whether /tmp/bin/yasm supports vmovdqa32 [eax]{k1}{z}, zmm0... no
Failed commandline was:
--------------------------------------------------
/tmp/bin/yasm conftest.asm -I. -I$(SRCPATH) -DARCH_X86_64=1 -I$(SRCPATH)/common/x86/ -f elf64 -o conftest.o
conftest.asm:1: error: instruction expected after label
conftest.asm:1: warning: ignoring unrecognized character `{'
conftest.asm:1: warning: ignoring unrecognized character `}'
conftest.asm:1: warning: ignoring unrecognized character `{'
conftest.asm:1: warning: ignoring unrecognized character `}'
--------------------------------------------------
Failed program was:
--------------------------------------------------
vmovdqa32 [eax]{k1}{z}, zmm0
--------------------------------------------------
所以:这里有什么交易?我的假设是,yasm插入替换nasm不好? yasm是否适合这一目的,但我没有向./configure提供正确的信息?我的CentOS的ffmpeg指令是否已经过时了,而且我应该更努力地获得现代化的nasm?
谢谢!我不明白,对yasm(而不是nasm)的默认是开发者的积极决定。 – radiofreemyourenji