2011-09-27 64 views
0

這是我正在執行的代碼。它在Ubuntu的NASM 2.08上給出了期望的輸出,但是在使用Red Hat 7.3進行編譯時出現了分段錯誤,運行NASM 0.98.22 有人可以告訴我如何確保它在紅帽子上運行良好。在紅帽編譯但在ubuntu上正常工作時出現分段錯誤

section .data 

section .text 
    global _start 
_start: 

xor eax,eax 
cdq 
push eax 
push long 0x68732f2f 
push long 0x6e69622f 
mov ebx,esp 
push eax 
push eax 
mov ecx,esp 
mov al,0xb 
push eax 
int 0x80 
+0

是一個平臺64位和另一個平臺32位?你有沒有試過在調試器(例如gdb)下運行? –

+0

是的。我的Ubuntu是64位,紅帽是32位 是否會出現問題?我該如何解決它? –

+0

請添加使用生成可執行 –

回答

0

您的代碼是32位的,所以當您構建它時,您需要確保構建一個32位可執行文件。這會在你的32位操作系統上默認發生,但你可能需要像-m32這樣的開關才能在64位操作系統上實現這一點。

+0

我建立它作爲 $ NASM -f精靈TEST3命令行.S $ LD -m elf_i386 -s -o TEST3 test3.o –

+0

和紅帽是一個32位操作系統 但它仍然給在Red Hat OS 分段錯誤,但它工作正常使用64位的Ubuntu –

+0

OK - 在gdb:'gdb test3.o'下運行,然後運行'看看它崩潰了哪一行 –

相關問題