어셈블리 코드의 연결 문제

어셈블리 코드의 연결 문제

이것은 내 어셈블리 코드입니다.

.section .data
    mystring: .asciz    "Hello world\n"

.section .text
.globl  _start
_start:

pushl   $0
pushl   $mystring
call    printf

pushl   $0
call    exit

내 64비트 우분투 컴퓨터에서 이 코드를 조합하고 연결하려고 합니다.32비트 모드에서. 이 코드는 다음 명령을 사용하여 성공적으로 어셈블되었습니다.

as -32 demo.s -o demo.o

하지만 ld 명령으로 연결하려고 하면 다음과 같습니다.

ld -m elf_i386 -s demo.o -o demo -lc

다음과 같은 오류가 발생합니다.

ld: skipping incompatible /usr/lib/x86_64-linux-gnu/libc.so when searching for -lc
ld: skipping incompatible /usr/lib/x86_64-linux-gnu/libc.a when searching for -lc
ld: cannot find -lc: No such file or directory
ld: skipping incompatible /usr/lib/x86_64-linux-gnu/libc.so when searching for -lc

이 문제에 대해 어떻게 해야 합니까?

libc.so내 위치 는 다음과 같습니다 .

libcjson.so.1 (libc6,x86-64) => /lib/x86_64-linux-gnu/libcjson.so.1
    libc.so.6 (libc6,x86-64) => /lib/x86_64-linux-gnu/libc.so.6
    libc.so.6 (libc6) => /lib/i386-linux-gnu/libc.so.6

관련 정보