2011-09-27 3 views
0

여기에 제가 실행중인 코드가 있습니다. 그것의 NASM 2.08 우분투에서 원하는 출력을 제공하지만, Red Hat 7.3 NASM 0.98.22 을 실행하는 레드햇 7.3 컴파일로 컴파일 할 때 세분화 오류를 줄 수 있습니다. 누군가가 너무 빨간 모자에 잘 실행되도록 할 수있는 방법을 말함으로써 나를 도울 수 있습니까?Red Hat에서 컴파일 할 때 세분화 오류가 발생하지만 우분투에서 잘 작동합니다.

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

예. 내 우분투는 64 비트이고 빨간 모자는 32 비트입니다 문제가 될 것입니까? 어떻게 해결할 수 있습니까? –

+0

당신이 실행을 –

답변

0

코드가 32 비트이므로 빌드 할 때 32 비트 실행 파일을 빌드해야합니다. 이것은 32 비트 OS에서 기본적으로 발생하지만 64 비트 OS에서이를 달성하려면 -m32과 같은 스위치가 필요할 것입니다.

+0

내가 그것을 건물입니다 같은 $ NASM -f 엘프 TEST3을 구축하는 데 사용하는 명령 줄을 추가하십시오 .s $ ld -m elf_i386 -s -o test3 test3.o –

+0

빨간 모자가 32 비트 OS 인 이지만 빨간 모자 OS에 의 세그멘테이션 오류가 있지만 64 비트 우분투에서 제대로 작동합니다. –

+0

OK - gdb :'gdb test3.o'에서 실행 한 다음'run'을 실행하여 충돌이 발생한 행을 봅니다 –