2016-07-15 51 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(或適用於禁用這些特定指令的適當標誌)的適當標誌)的指令。