1

プログラムのコンパイルで問題が発生しています。これらが何を意味するのかわかりません。誰かが助けてくれればありがたいです。

C:\Users\Joshua\Documents\GitHub\Zeus-TSO\_deps\libmpg123\dct64_sse.S: Assembler
 messages:
C:\Users\Joshua\Documents\GitHub\Zeus-TSO\_deps\libmpg123\dct64_sse.S:41: Error:
 invalid instruction suffix for `push'
C:\Users\Joshua\Documents\GitHub\Zeus-TSO\_deps\libmpg123\dct64_sse.S:46: Error:
 invalid instruction suffix for `push'
C:\Users\Joshua\Documents\GitHub\Zeus-TSO\_deps\libmpg123\dct64_sse.S:449: Error: invalid instruction suffix for `pop'
C:\Users\Joshua\Documents\GitHub\Zeus-TSO\_deps\libmpg123\dct64_sse.S:451: Error: invalid instruction suffix for `pop'
_deps\libmpg123\CMakeFiles\libmpg123_static.dir\build.make:378: recipe for targe
t '_deps/libmpg123/CMakeFiles/libmpg123_static.dir/dct64_sse.S.obj' failed
mingw32-make[2]:  [_deps/libmpg123/CMakeFiles/libmpg123_static.dir/dct64_sse.
S.obj] Error 1
CMakeFiles\Makefile2:225: recipe for target '_deps/libmpg123/CMakeFiles/libmpg12
3_static.dir/all' failed
mingw32-make[1]:  [_deps/libmpg123/CMakeFiles/libmpg123_static.dir/all] Error
 2
Makefile:74: recipe for target 'all' failed
mingw32-make:  [all] Error 2
4

1 に答える 1

4

64 ビット アセンブラで 32 ビット アセンブリ コードをビルドしようとしているようです。

次の 2 つのオプションがあります。

  1. --32オプションを利用するなどして、32ビットアセンブラを使用してください。
  2. /命令で使用される%raxような 32 ビット レジスタの代わりに、たとえばなどの 64 ビット (拡張) レジスタに置き換えることにより、コードを変更します。%eaxpushpop

ビルド システムは CMake のように見えるので、CMakeでさまざまな Assembly 方言のビルドを構成する方法については、このマニュアルを参照してください。

あなたは試すことができます:

set(CMAKE_ASM_FLAGS "--32")

しかし、私はそれをテストしていません。

于 2013-10-13T15:13:03.910 に答える