#linker #llvm #nasm #libc
#компоновщик #llvm #nasm #libc
Вопрос:
У меня есть файл main.s.
extern printf
extern exit
section .data
fmt: db "hi!", 0xa
section .text
global _start
_start:
mov rax, 0
mov rdi, fmt
call printf
call exit
Скомпилировать и запустить
$ yasm -f elf64 main.s -o main.o
$ ld.lld main.o -o main --dynamic-linker /lib/ld-linux-x86-64.so.2
$ ./main
Но я получил:
ld.lld: ошибка: неопределенный символ: printf
ld.lld: ошибка: неопределенный символ: выход
в ld.lld нет опции -lc, подобной компоновщику ld.
Ответ №1:
Просто используйте опцию : -L / lib, чтобы указать компоновщику, где найти libc
ld.lld main.o --dynamic-linker /lib/ld-linux-x86-64.so.2 -o main -L/lib -lc