交叉编译ffmpeg出错,为什么ARM下要用到汇编啊?

想要把ffmpeg移植到arm中,因此在linux下进行交叉编译,但是出现以下问题:
1。首先
./configure \
--enable-cross-compile \
--arch=armv6 \
--target-os=linux \
--cross-prefix=/usr/local/arm/4.4.1/bin/arm-none-linux-gnueabi- \
--cc=gcc \
--enable-gpl \
--enable-shared 
这个可以产生config.mak和config.h文件。
但make时,出现错误:
./libavutil/arm/bswap.h: Assembler messages:
./libavutil/arm/bswap.h:61: Error: no such instruction: `eor %ecx,%esi,%esi,ror'
./libavutil/arm/bswap.h:62: Error: no such instruction: `bic %ecx,%ecx,'
./libavutil/arm/bswap.h:63: Error: suffix or operands invalid for `mov'

也就是说,无法编译这些汇编代码了,于是改为:
./configure \
--enable-cross-compile \
--arch=armv6 \
--target-os=linux \
--cross-prefix=/usr/local/arm/s5pv210/arm-2009q3/bin/arm-none-linux-gnueabi- \
--cc=gcc \
--as=as \
--enable-gpl \
--enable-shared 
增加了一行,结果直接报错:
GNU assembler not found, install gas-preprocessor

If you think configure made a mistake, make sure you are using the latest
version from SVN. If the latest version fails, report the problem to the
[email protected] mailing list or IRC #ffmpeg on irc.freenode.net.
Include the log file "config.log" produced by configure as this will help
solving the problem.

请问,那位有解决的经验和方法,请指教!

作者: lxglxt   发布时间: 2010-08-31

是不是arm的汇编指令不一样啊?

作者: louyong0571   发布时间: 2010-09-01

那些是x86的汇编
说明你的arch选项没起作用
我用的--arch=arm 通过

同时你的--cc=gcc \
--as=as \
根本不是交叉编译嘛

http://hi.baidu.com/deep_pro/blog/item/197f7d442e57d388b3b7dc75.html

作者: deep_pro   发布时间: 2010-09-01

楼上的,多谢了。
我的arm-linux-gcc版本是4.4.1,旧的版本也试验过3.4.1,4.3.2。
我的是ffmpeg-0.6

arch选项应该起作用了,部分汇编编译通过了。
--arch=arm我也试验过,后来察看源码,里面最新的是armv6。

--cc=gcc \
--as=as \
虽然看起来不是交叉编译,但加上前缀
--cross-prefix=/usr/local/arm/s5pv210/arm-2009q3/bin/arm-none-linux-gnueabi- \
就是交叉编译了,只是写法不同。

--cross-prefix=/usr/local/arm/s5pv210/arm-2009q3/bin/ \
--cc=arm-none-linux-gnueabi-gcc \
--as=arm-none-linux-gnueabi-as \
我同样试验过,同样的.

我之前参照了你推荐这个帖子。摘录如下:
这里使用./configure --cpu=armv4 --cross-prefix=arm-linux- --cc=arm-linux-gcc --host-cc=gcc --enable-cross-compile --enable-static --disable-optimizations --disable-mmx --disable-iwmmxt --disable-altivec --disable-vhook --disable-ffserver --enable-ffplay --disable-mmx2 --disable-armv5te --disable-armv6 --disable-armv6t2 --disable-armvfp --arch=arm --target-path=output

--enable-cross-compile使能交叉编译后,必须指出arch和OS,这是configure出现的提示。所以从语法上就是错误的。
我试验也是没有通过。

作者: lxglxt   发布时间: 2010-09-01