실패 컴파일하고 오류가 발생하지 않습니다 그리고 내가 그것을 실행하려고하면 리눅스 ELF 을 생산 링크 내가 얻을 : 나는 그것의 그것이 안녕하세요이이 경우에도없는보고 왜 잘못된 ELF 파일을 생성 가정링킹 리눅스 x86-64에 조립 LD와 안녕하세요 세계 프로그램은 내가 최근 리눅스에 86 64 비트 어셈블리와 주변 놀겠다는 거 봤는데 겉보기에 간단한 프로그램을 컴파일 한 후 내 머리를 긁적 왼쪽하고
.:[ [email protected] asm ]:.
#(0)> ./hello
bash: ./hello: No such file or directory
. 이것은 쉽게 해결 될 수 있다면 아마, 그것으로 장난 그냥 궁금하겠습니다 why-- 확실하지^_^여기
내 컴파일/링크 명령 줄입니다 : 여기nasm -f elf64 hello.s -g
ld -o hello hello.o -lc
입니다 코드 :
section .data
msg: db "Hello, world!",0xa,0
section .text
extern printf
global main
main:
push rbp
mov rbp, rsp
mov rdi, msg
xor rax, rax
call printf
xor rax, rax
pop rbp
ret
편집 - 나는
이
hello.o 주요 -e
LD를 사용 아무 것도 없으면 -lc 플래그를 제거하고 printf의 extern을 주석 처리하면 파일이 작동합니다. – zxcdw
어떻게 생각 하시나요? :) 그럼 printf는 정의되지 않은 심볼입니다 ... – h4unt3r
사실 나는 printf 호출을 주석 처리했습니다.하지만 제가 말하고자하는 것은 파일이 libc에 링크되어 있지 않으면 잘 동작한다는 것입니다. – zxcdw