我正在尝试在 Scientific Linux 6.7 版上使用 gcc/5.3 编译 C++ 代码。每当我运行我的 Makefile 时,我总是收到以下错误:
/tmp/ccjZqIED.s: Assembler messages:
/tmp/ccjZqIED.s:768: Error: no such instruction: `shlx %rax,%rdx,%rdx'
/tmp/ccjZqIED.s:1067: Error: no such instruction: `shlx %rax,%rdx,%rdx'
/tmp/ccjZqIED.s: Assembler messages:
/tmp/ccjZqIED.s:6229: Error: no such instruction: `mulx %r10,%rcx,%rbx'
/tmp/ccjZqIED.s:6248: Error: no such instruction: `mulx %r13,%rcx,%rbx'
/tmp/ccjZqIED.s:7109: Error: no such instruction: `mulx %r10,%rcx,%rbx'
/tmp/ccjZqIED.s:7128: Error: no such instruction: `mulx %r13,%rcx,%rbx'
我尝试遵循这个问题的建议,但没有改变我的输出: Compile errors with Assembler messages
我的编译器选项目前是:
CXXFLAGS = -g -Wall -O0 -pg -std=c++11
有人知道是什么原因造成的吗?
最佳答案
这意味着 GCC 正在输出您的汇编程序不支持的指令。这要么来自源代码中的内联 asm
,要么不应该发生,并建议您在另一台机器上使用较新的汇编器编译 GCC,然后将其复制到另一台它没有的机器上'正常工作。
假设这些指令没有在 asm
语句中明确使用,您应该能够告诉 GCC 不要使用合适的标志发出这些指令,例如 -mno-avx
(或任何适合禁止使用这些特定指令的标志)。
关于c++ - 汇编消息 : no such instruction when Compiling C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38403611/