使用Microsoft Visual Studio 2017预览版为Windows10 / aarch64编译FFmpeg的错误

时间:2018-10-22 04:23:08

标签: ffmpeg arm chromium arm64 armasm

我正在尝试使用Microsoft Visual Studio 2017预览版社区版为Windows10 / Aarch64配置编译FFmpeg(Chromium版本)。我在下面复制的程序集文件中遇到错误(突出显示了一些错误)。我相信FFmpeg已经在Linux / Aarch64配置(可能使用GNU汇编程序)上工作了,在这种情况下,相同的汇编代码也应适用于Microsoft ARM Macro Assembler。如果我在此处缺少任何内容以及任何可帮助解决错误的指针,请告诉我。

D:\ Work \ Chromium_FFmpeg \ chromium \ src>忍者-C out \ ARM64V8 third_party \ ffmpeg 忍者:进入目录“ out \ ARM64V8” [2/9] ASM obj / third_party / ffmpeg / ffmpeg_internal / autorename_libavcodec_aarch64_fft_neon.obj 失败:obj / third_party / ffmpeg / ffmpeg_internal / autorename_libavcodec_aarch64_fft_neon.obj D:/Work/Chromium_FFmpeg/depot_tools/win_tools-2_7_6_bin/python/bin/python.exe ../../build/toolchain/win/tool_wrapper.py asm-wrapper environment.arm64 armasm64.exe / Foobj / third_party / ffmpegeg /ffmpeg_internal/autorename_libavcodec_aarch64_fft_neon.obj ../../third_party/ffmpeg/libavcodec/aarch64/autorename_libavcodec_aarch64_fft_neon.S 用于64位的Microsoft(R)ARM宏汇编程序版本14.16.26926.0 D:\ Work \ Chromium_FFmpeg \ chromium \ src \ third_party \ ffmpeg \ libavcodec \ aarch64 \ autorename_libavcodec_aarch64_fft_neon.S(1):错误A2003:行语法不正确:/ //文件自动生成。请参阅crbug.com/495833。 D:\ Work \ Chromium_FFmpeg \ chromium \ src \ third_party \ ffmpeg \ libavcodec \ aarch64 \ autorename_libavcodec_aarch64_fft_neon.S(2):错误A2230:非法预处理指令;只能识别“ #line [文件名]” 包括“ fft_neon.S” D:\ Work \ Chromium_FFmpeg \ chromium \ src \ third_party \ ffmpeg \ libavcodec \ aarch64 \ autorename_libavcodec_aarch64_fft_neon.S(3):警告A4045:缺少END指令 包括“ fft_neon.S” 。 。 。 [6/9] ASM obj / third_party / ffmpeg / ffmpeg_internal / mpegaudiodsp_neon.obj 失败:obj / third_party / ffmpeg / ffmpeg_internal / mpegaudiodsp_neon.obj D:/Work/Chromium_FFmpeg/depot_tools/win_tools-2_7_6_bin/python/bin/python.exe ../../build/toolchain/win/tool_wrapper.py asm-wrapper environment.arm64 armasm64.exe / Foobj / third_party / ffmpegeg /ffmpeg_internal/mpegaudiodsp_neon.obj ../../third_party/ffmpeg/libavcodec/aarch64/mp​​egaudiodsp_neon.S Microsoft(R)ARM宏汇编程序版本14.16.26926.0(用于64位) D:\ Work \ Chromium_FFmpeg \ chromium \ src \ third_party \ ffmpeg \ libavcodec \ aarch64 \ mpegaudiodsp_neon.S(1):错误A2003:行语法不正确:/ / * D:\ Work \ Chromium_FFmpeg \ chromium \ src \ third_party \ ffmpeg \ libavcodec \ aarch64 \ mpegaudiodsp_neon.S(2):错误A2079:行语法不正确;预期符号  *版权所有(c)2014 Janne Grunau D:\ Work \ Chromium_FFmpeg \ chromium \ src \ third_party \ ffmpeg \ libavcodec \ aarch64 \ mpegaudiodsp_neon.S(3):错误A2079:行语法不正确;预期符号  * D:\ Work \ Chromium_FFmpeg \ chromium \ src \ third_party \ ffmpeg \ libavcodec \ aarch64 \ mpegaudiodsp_neon.S(4):错误A2079:行语法不正确;预期符号  *此文件是FFmpeg的一部分。 D:\ Work \ Chromium_FFmpeg \ chromium \ src \ third_party \ ffmpeg \ libavcodec \ aarch64 \ mpegaudiodsp_neon.S(5):错误A2079:行语法不正确;预期符号  * D:\ Work \ Chromium_FFmpeg \ chromium \ src \ third_party \ ffmpeg \ libavcodec \ aarch64 \ mpegaudiodsp_neon.S(6):错误A2079:行语法不正确;预期符号  * FFmpeg是免费软件;您可以重新分发它和/或 D:\ Work \ Chromium_FFmpeg \ chromium \ src \ third_party \ ffmpeg \ libavcodec \ aarch64 \ mpegaudiodsp_neon.S(7):错误A2079:行语法不正确;预期符号  *根据GNU次要公众条款进行修改 D:\ Work \ Chromium_FFmpeg \ chromium \ src \ third_party \ ffmpeg \ libavcodec \ aarch64 \ mpegaudiodsp_neon.S(8):错误A2079:行语法不正确;预期符号  *由自由软件基金会发布的许可证;要么 D:\ Work \ Chromium_FFmpeg \ chromium \ src \ third_party \ ffmpeg \ libavcodec \ aarch64 \ mpegaudiodsp_neon.S(9):错误A2079:行语法不正确;预期符号  *许可证的版本2.1,或(由您选择)任何更高版本。 D:\ Work \ Chromium_FFmpeg \ chromium \ src \ third_party \ ffmpeg \ libavcodec \ aarch64 \ mpegaudiodsp_neon.S(10):错误A2079:行语法不正确;预期符号  * D:\ Work \ Chromium_FFmpeg \ chromium \ src \ third_party \ ffmpeg \ libavcodec \ aarch64 \ mpegaudiodsp_neon.S(11):错误A2079:行语法不正确;预期符号  *分发FFmpeg希望它会有用, D:\ Work \ Chromium_FFmpeg \ chromium \ src \ third_party \ ffmpeg \ libavcodec \ aarch64 \ mpegaudiodsp_neon.S(12):错误A2079:行语法不正确;预期符号  *但无任何保证;甚至没有默示担保 D:\ Work \ Chromium_FFmpeg \ chromium \ src \ third_party \ ffmpeg \ libavcodec \ aarch64 \ mpegaudiodsp_neon.S(13):错误A2079:行语法不正确;预期符号  *特定目的的适销性或适用性。见GNU D:\ Work \ Chromium_FFmpeg \ chromium \ src \ third_party \ ffmpeg \ libavcodec \ aarch64 \ mpegaudiodsp_neon.S(14):错误A2079:行语法不正确;预期符号  *较少的通用公共许可证,以获取更多详细信息。 D:\ Work \ Chromium_FFmpeg \ chromium \ src \ third_party \ ffmpeg \ libavcodec \ aarch64 \ mpegaudiodsp_neon.S(15):错误A2079:行语法不正确;预期符号  * D:\ Work \ Chromium_FFmpeg \ chromium \ src \ third_party \ ffmpeg \ libavcodec \ aarch64 \ mpegaudiodsp_neon.S(16):错误A2079:行语法不正确;预期符号  *您应该已经收到了GNU次要普通公众的副本 D:\ Work \ Chromium_FFmpeg \ chromium \ src \ third_party \ ffmpeg \ libavcodec \ aarch64 \ mpegaudiodsp_neon.S(17):错误A2079:行语法不正确;预期符号  *许可以及FFmpeg;如果没有,请写信给自由软件 D:\ Work \ Chromium_FFmpeg \ chromium \ src \ third_party \ ffmpeg \ libavcodec \ aarch64 \ mpegaudiodsp_neon.S(18):错误A2079:行语法不正确;预期符号  * Foundation,Inc.,富兰克林街51号,五楼,波士顿,MA 02110-1301美国 D:\ Work \ Chromium_FFmpeg \ chromium \ src \ third_party \ ffmpeg \ libavcodec \ aarch64 \ mpegaudiodsp_neon.S(19):错误A2079:行语法不正确;预期符号  * / D:\ Work \ Chromium_FFmpeg \ chromium \ src \ third_party \ ffmpeg \ libavcodec \ aarch64 \ mpegaudiodsp_neon.S(21):错误A2230:非法预处理指令;仅识别“ #line [文件名]” 包括“ libavutil / aarch64 / asm.S” D:\ Work \ Chromium_FFmpeg \ chromium \ src \ third_party \ ffmpeg \ libavcodec \ aarch64 \ mpegaudiodsp_neon.S(23):错误A2230:非法预处理指令;仅识别“ #line [文件名]” define FRAC_BITS 23 // sb_samples和dct的小数位 D:\ Work \ Chromium_FFmpeg \ chromium \ src \ third_party \ ffmpeg \ libavcodec \ aarch64 \ mpegaudiodsp_neon.S(24):错误A2230:非法预处理指令;仅识别“ #line [文件名]” 定义WFRAC_BITS 16 //窗口的小数位 D:\ Work \ Chromium_FFmpeg \ chromium \ src \ third_party \ ffmpeg \ libavcodec \ aarch64 \ mpegaudiodsp_neon.S(25):错误A2230:非法预处理指令;仅识别“ #line [文件名]” 定义OUT_SHIFT(WFRAC_BITS + FRAC_BITS-15) D:\ Work \ Chromium_FFmpeg \ chromium \ src \ third_party \ ffmpeg \ libavcodec \ aarch64 \ mpegaudiodsp_neon.S(27):错误A2034:未知操作码:tbl_rev128_s const tbl_rev128_s,align = 4 D:\ Work \ Chromium_FFmpeg \ chromium \ src \ third_party \ ffmpeg \ libavcodec \ aarch64 \ mpegaudiodsp_neon.S(28):错误A2034:未知操作码:。         .byte 12,13,14,15 D:\ Work \ Chromium_FFmpeg \ chromium \ src \ third_party \ ffmpeg \ libavcodec \ aarch64 \ mpegaudiodsp_neon.S(29):错误A2034:未知操作码:。         .byte 8,9,10,11 D:\ Work \ Chromium_FFmpeg \ chromium \ src \ third_party \ ffmpeg \ libavcodec \ aarch64 \ mpegaudiodsp_neon.S(30):错误A2034:未知操作码:。         .byte 4,5,6,7 D:\ Work \ Chromium_FFmpeg \ chromium \ src \ third_party \ ffmpeg \ libavcodec \ aarch64 \ mpegaudiodsp_neon.S(31):错误A2034:未知操作码:。         .byte 0、1、2、3 D:\ Work \ Chromium_FFmpeg \ chromium \ src \ third_party \ ffmpeg \ libavcodec \ aarch64 \ mpegaudiodsp_neon.S(34):错误A2003:行语法不正确:。 .macro apply_window类型,st D:\ Work \ Chromium_FFmpeg \ chromium \ src \ third_party \ ffmpeg \ libavcodec \ aarch64 \ mpegaudiodsp_neon.S(35):错误A2034:未知操作码:ff_mpadsp_apply_window _ 函数ff_mpadsp_apply_window_ \ type()_ neon,export = 1 D:\ Work \ Chromium_FFmpeg \ chromium \ src \ third_party \ ffmpeg \ libavcodec \ aarch64 \ mpegaudiodsp_neon.S(42):错误A2034:未知操作码:movrel         movrel x15,tbl_rev128_s D:\ Work \ Chromium_FFmpeg \ chromium \ src \ third_party \ ffmpeg \ libavcodec \ aarch64 \ mpegaudiodsp_neon.S(44):错误A2003:行语法不正确:。 .ifc \ type,固定 D:\ Work \ Chromium_FFmpeg \ chromium \ src \ third_party \ ffmpeg \ libavcodec \ aarch64 \ mpegaudiodsp_neon.S(46):错误A2003:行语法不正确:。 。其他 D:\ Work \ Chromium_FFmpeg \ chromium \ src \ third_party \ ffmpeg \ libavcodec \ aarch64 \ mpegaudiodsp_neon.S(48):错误A2003:行语法不正确:。 。万一 D:\ Work \ Chromium_FFmpeg \ chromium \ src \ third_party \ ffmpeg \ libavcodec \ aarch64 \ mpegaudiodsp_neon.S(53):错误A2173:表达式中的语法错误         sub x5,x5,x4 //样本2 D:\ Work \ Chromium_FFmpeg \ chromium \ src \ third_party \ ffmpeg \ libavcodec \ aarch64 \ mpegaudiodsp_neon.S(53):错误A2003:错误的行语法:无法解析操作数         sub x5,x5,x4 //样本2 D:\ Work \ Chromium_FFmpeg \ chromium \ src \ third_party \ ffmpeg \ libavcodec \ aarch64 \ mpegaudiodsp_neon.S(54):错误A2173:表达式中的语法错误         负x13,x4 // -incr D:\ Work \ Chromium_FFmpeg \ chromium \ src \ third_party \ ffmpeg \ libavcodec \ aarch64 \ mpegaudiodsp_neon.S(54):错误A2003:错误的行语法:无法解析操作数         负x13,x4 // -incr D:\ Work \ Chromium_FFmpeg \ chromium \ src \ third_party \ ffmpeg \ libavcodec \ aarch64 \ mpegaudiodsp_neon.S(56):错误A2003:行语法不正确:。 .ifc \ type,固定 D:\ Work \ Chromium_FFmpeg \ chromium \ src \ third_party \ ffmpeg \ libavcodec \ aarch64 \ mpegaudiodsp_neon.S(57):错误A2173:表达式中的语法错误         ld1r {v16.2s},[x2] //抖动状态 D:\ Work \ Chromium_FFmpeg \ chromium \ src \ third_party \ ffmpeg \ libavcodec \ aarch64 \ mpegaudiodsp_neon.S(57):错误A2003:错误的行语法:无法解析操作数         ld1r {v16.2s},[x2] //抖动状态 D:\ Work \ Chromium_FFmpeg \ chromium \ src \ third_party \ ffmpeg \ libavcodec \ aarch64 \ mpegaudiodsp_neon.S(60):错误A2061:非法表达式类型;预期的绝对数值         movi v30.2d,#(1 <错误A2034:未知操作码:MLA2         MLA2 v17,v2,v0 D:\ Work \ Chromium_FFmpeg \ chromium \ src \ third_party \ ffmpeg \ libavcodec \ aarch64 \ mpegaudiodsp_neon.S(93):错误A2034:未知操作码:MLS2         MLS2 v19,v3,v6 D:\ Work \ Chromium_FFmpeg \ chromium \ src \ third_party \ ffmpeg \ libavcodec \ aarch64 \ mpegaudiodsp_neon.S(95):错误A2034:未知操作码:MLS2         MLS2 v17,v4,v7 D:\ Work \ Chromium_FFmpeg \ chromium \ src \ third_party \ ffmpeg \ libavcodec \ aarch64 \ mpegaudiodsp_neon.S(97):错误A2034:未知操作码:MLS2         MLS2 v19,v5,v1 D:\ Work \ Chromium_FFmpeg \ chromium \ src \ third_party \ ffmpeg \ libavcodec \ aarch64 \ mpegaudiodsp_neon.S(98):错误A2034:未知操作码:。         b.gt 2b D:\ Work \ Chromium_FFmpeg \ chromium \ src \ third_party \ ffmpeg \ libavcodec \ aarch64 \ mpegaudiodsp_neon.S(101):错误A2173:表达式中的语法错误         sub x10,x10,#64 << 5 // 64 * 8 * sizeof(int32_t) D:\ Work \ Chromium_FFmpeg \ chromium \ src \ third_party \ ffmpeg \ libavcodec \ aarch64 \ mpegaudiodsp_neon.S(101):错误A2003:错误的行语法:无法解析操作数         sub x10,x10,#64 << 5 // 64 * 8 * sizeof(int32_t) D:\ Work \ Chromium_FFmpeg \ chromium \ src \ third_party \ ffmpeg \ libavcodec \ aarch64 \ mpegaudiodsp_neon.S(103):错误A2003:行语法不正确:。 .ifc \ type,固定 D:\ Work \ Chromium_FFmpeg \ chromium \ src \ third_party \ ffmpeg \ libavcodec \ aarch64 \ mpegaudiodsp_neon.S(105):错误A2034:未知操作码:ext         ext v28.16b,v29.16b,v28.16b,#8 。 。

1 个答案:

答案 0 :(得分:0)

  

我相信FFmpeg已经在Linux / Aarch64配置上工作(可能使用GNU汇编程序),在这种情况下,相同的汇编代码也应该适用于Microsoft   ARM宏汇编器也是如此。

Microsoft Arm Assembler使用与GNU汇编程序不同的语法,与the syntax used by armasm类似但不太相同。它们不兼容。