error: inlining failed in call to always_inline '_mm_aesenc_si128': target specific option mismatch, adding -msse4.1 not enough

error: inlining failed in call to always_inline '_mm_aesenc_si128': target specific option mismatch, adding -msse4.1 not enough

我正在尝试将 cryptonote gui 钱包从 Linux (Fedora) 交叉编译到 Windows。

在没有任何附加标志的情况下进行编译时,出现此错误:

In file included from /home/etienne/Documents/Brokertech/bkc/brokercoins/guiwallet-win/cryptonote/src/crypto/slow-hash.c:9:0:
/usr/lib/gcc/i686-w64-mingw32/7.2.0/include/emmintrin.h:1290:1: error: inlining failed in call to always_inline '_mm_xor_si128': target specific option mismatch
  _mm_xor_si128 (__m128i __A, __m128i __B)
  ^~~~~~~~~~~~~
/home/etienne/Documents/Brokertech/bkc/brokercoins/guiwallet-win/cryptonote/src/crypto/slow-hash.c:100:11: note: called from here
   *tmp3 = _mm_xor_si128(*tmp3, tmp4);

然后我尝试为 C 和 CXX 添加 -msse4.1 标志,我仍然遇到同样的错误,但在不同的文件上:

In file included from 
/home/etienne/Documents/Brokertech/bkc/brokercoins/guiwallet-win/cryptonote/src/crypto/slow-hash.c:10:0:
/usr/lib/gcc/i686-w64-mingw32/7.2.0/include/wmmintrin.h:61:1: error: inlining failed in call to always_inline '_mm_aesenc_si128': target specific option mismatch
   _mm_aesenc_si128 (__m128i __X, __m128i __Y)
   ^~~~~~~~~~~~~~~~
In file included from 
/home/etienne/Documents/Brokertech/bkc/brokercoins/guiwallet-win/cryptonote/src/crypto/slow-hash.c:167:0:
/home/etienne/Documents/Brokertech/bkc/brokercoins/guiwallet-win/cryptonote/src/crypto/slow-hash.inl:159:21: note: called from here
   xmminput[0] = _mm_aesenc_si128(xmminput[0], expkey[j]);

我不明白为什么该解决方案对第一个文件有效但现在被阻止了? 非常感谢!

您没有遇到同样的错误。您遇到了 2 个 完全不同的错误 。第一个内联失败是针对 SSE-2 128 位 XOR 指令,该指令通过添加 -msse4.1 得到解决。第二个是 AES NI 内在函数,我相信您需要 -maes