最近交叉编译 ffmpeg4.2.2 遇到了几个问题,在此记录一下。
原始配置语句:
./configure --prefix=./install-mips-linux --enable-asm --enable-cross-compile --cross-prefix=arm-mix410-linux- --arch=arm --disable-yasm --disable-parsers --disable-decoders --disable-encoders --disable-muxers --disable-demuxers --enable-muxer=avi --enable-muxer=mp4 --enable-encoder=aac --disable-protocols --enable-protocol=file --disable-filters --disable-bsfs --target-os=linux --host-os=linux --enable-shared --disable-static --disable-indevs --disable-outdevs --disable-doc --disable-ffmpeg --disable-ffplay --disable-ffprobe
1、configure 失败
mips-linux-gnu-gcc is unable to create an executable file. C compiler
test failed.
查看config.log,有一大堆类似于这样的打印。
mips-linux-gnu-gcc: error: unrecognized command line option '-mcpu='; did you mean '-cpp='?
test_cpp_condition stddef.h defined __ARM_ARCH_7S__ || defined __TARGET_ARCH_7S -mcpu=
test_cpp -mcpu=
将选项 --arch=arm 改成 --arch=arm64 后,configure 正常。
2、make 失败
./libavutil/aarch64/bswap.h:38:5: error: invalid 'asm': invalid use of '%w'
__asm__("rev %w0, %w0" : "+r"(x));
重新配置configure,将 --enable-asm 改成 --disnable-asm 即可编译成功。这里更改了asm配置可能会引起性能问题,但是目前能用就行,后续再考虑这个问题吧。