在linux中编译x264时出错

时间:2011-04-14 17:17:19

标签: linux compilation x264

嘿所有人 我正在尝试在linux(x64)下编译x264。但它一直给我一个错误。我用Google搜索但没有发现任何东西。这是命令行历史:

spin@around:~/x264$ git clone git://git.videolan.org/x264.git
Cloning into x264...
remote: Counting objects: 13539, done.
remote: Compressing objects: 100% (4416/4416), done.
remote: Total 13539 (delta 11005), reused 11225 (delta 9082)
Receiving objects: 100% (13539/13539), 3.29 MiB | 2.79 MiB/s, done.
Resolving deltas: 100% (11005/11005), done.
spin@around:~/x264/x264$ ./configure
Found no assembler
Minimum version is yasm-0.7.0
If you really want to compile without asm, configure with --disable-asm.
spin@around:~/x264/x264$ ./configure --disable-asm
Platform:   X86_64
System:     LINUX
asm:        no
avs:        no
lavf:       no
ffms:       no
gpac:       no
gpl:        yes
thread:     posix
filters:    crop select_every
debug:      no
gprof:      no
PIC:        no
shared:     no
visualize:  no
bit depth:  8

You can run 'make' or 'make fprofiled' now.
spin@around:~/x264/x264$ make
gcc -Wshadow -O3 -ffast-math  -Wall -I. -std=gnu99 -s -fomit-frame-pointer -fno-tree-vectorize   -c -o x264.o x264.c
In file included from common/common.h:864,
                 from x264.c:33:
common/rectangle.h: In function āx264_macroblock_cache_rectā:
common/rectangle.h:84: error: āv4siā undeclared (first use in this function)
common/rectangle.h:84: error: (Each undeclared identifier is reported only once
common/rectangle.h:84: error: for each function it appears in.)
common/rectangle.h:84: error: expected ā;ā before āv16ā
common/rectangle.h:86: error: ā__m128ā undeclared (first use in this function)
common/rectangle.h:86: error: expected ā;ā before āv16ā
common/rectangle.h:87: error: expected ā;ā before āv16ā
common/rectangle.h:89: error: expected ā;ā before āv16ā
common/rectangle.h:90: error: expected ā;ā before āv16ā
make: *** [x264.o] Error 1
spin@around:~/x264/x264$

,这是第83到91行的文件:

#if HAVE_VECTOREXT && defined(__SSE__)
        v4si v16 = {v,v,v,v};

        M128( d+s*0+0 ) = (__m128)v16;
        M128( d+s*1+0 ) = (__m128)v16;
        if( h == 2 ) return;
        M128( d+s*2+0 ) = (__m128)v16;
        M128( d+s*3+0 ) = (__m128)v16;
#else

1 个答案:

答案 0 :(得分:1)

v4si是SSE标识符,仅在-msse传递给gcc时才存在。报告上游的错误。