2016-11-06 4 views
2

私はmingw32を使ってプロジェクトをWindowsに移植していましたが、プロジェクトはlibfecというライブラリに依存しています。 Libfecには内部の動作を最適化するためのアセンブリコードがたくさんあります。 Linux(GCC 5.4)では、ライブラリはうまくコンパイルされます。今日、私は(だけでなくGCC 5.4で)MINGW32を使用して、Windows上でコンパイルしようとした私は、このエラーを得た:Mingw32 @functionでのアセンブラエラー

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

私はコンパイラと経験を持っている友人に尋ねた、と彼はコード内の問題を見つけることができませんでした(そしてそれは、Linuxに罰金コンパイルん)。

+3

使用される.typeディレクティブの形式は、ELFオブジェクト形式に固有です。 WindowのPECOFFオブジェクト形式と同等のものがあれば、それを把握する必要があります。 –

+0

それは意味をなさないロスリッジ、私は同等を見るためにPECOFFオブジェクト形式で見ていきます。 –

答えて

2

だから、ソリューションは本当にシンプルでした。ちょうど.typeディレクティブをコメントしてください。 PECOFFはそれを必要としません。今私はコンパイルして、うまく動作することができます。

関連する問題