我使用mingw32将项目移植到Windows,并且该项目依赖于名为libfec的库。 Libfec有很多汇编代码可以优化内部工作。在Linux(带有GCC 5.4)中,该库可以正常编译。今天,我尝试使用mingw32(以及gcc 5.4)在Windows上进行编译,但出现此错误:

as   -o mmxbfly27.o mmxbfly27.s
mmxbfly27.s: Assembler messages:
mmxbfly27.s:10: Warning: .type pseudo-op used outside of .def/.endef ignored.
mmxbfly27.s:10: Error: junk at end of line, first unrecognized character is `u'
make: *** [mmxbfly27.o] Error 1

关于.type的警告也发生在Linux中,但错误没有发生。我检查了binutils,它们实际上是不同的(在Linux上是2.26,在mingw中是2.25),但是libfec的代码有些陈旧(几年了),即使使用binutils 2.0也可以编译。

我不确定为什么我不能在Windows上编译它。完整的代码在这里:

https://github.com/quiet/libfec/blob/master/mmxbfly27.s

我问了一个有编译器经验的 friend ,他在代码中找不到问题(并且在Linux中可以很好地编译)。

最佳答案

好的,所以解决方案非常简单:只需注释.type指令即可。 PECOFF不需要那个。现在,我可以编译并运行良好了。

09-09 21:00