首页 > 解决方案 > 已解决:使用 ld.lld 链接器链接 nasm

问题描述

我有 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 没有像 ld 链接器那样的-lc选项。

标签: linkerllvmnasmlibc

解决方案


只需使用 : -L/lib 选项告诉链接器在哪里可以找到 libc

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

推荐阅读