'Link nasm with ld.lld linker

I have main.s file.

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

Compile and run

$ yasm -f elf64 main.s -o main.o
$ ld.lld main.o -o main --dynamic-linker /lib/ld-linux-x86-64.so.2
$ ./main

But i got:
ld.lld: error: undefined symbol: printf
ld.lld: error: undefined symbol: exit

ld.lld does not have -lc option like ld linker.



Solution 1:[1]

Just use : -L/lib option to tell the linker where to find libc

ld.lld main.o --dynamic-linker /lib/ld-linux-x86-64.so.2 -o main -L/lib -lc

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Awhb