2016-07-15 140 views
0

我试图在科学Linux版本6.7上使用gcc/5.3编译C++代码。我不断收到每当我跑不过我的Makefile以下错误:汇编程序消息:编译C++时没有这样的指令

/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' 

我attmpted遵循从这个问题的意见没有改变我的输出: Compile errors with Assembler messages

我的编译器选项目前:

CXXFLAGS  = -g -Wall -O0 -pg -std=c++11 

有没有人有任何想法可能会造成这种情况?

+0

您是否按照其他答案中的建议尝试使用'-mno-avx'? –

+0

你使用的平台是什么?不同的处理器有不同的汇编指令 –

+0

请添加[mcve] – MSalters

回答

1

这意味着GCC正在输出一个汇编器不支持的指令。要么来自源代码中的内联asm,要么不应该发生这种情况,并且建议您已经在具有较新汇编程序的另一台机器上编译了GCC,然后将其复制到另一台机器中,从而无法正常工作。

假设这些指令并未在asm声明中明确使用,您应该能够告诉GCC不要发出带有合适标志(例如-mno-avx(或适用于禁用这些特定指令的适当标志)的适当标志)的指令。