linker - 已解决:使用 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选项。
解决方案
只需使用 : -L/lib 选项告诉链接器在哪里可以找到 libc
ld.lld main.o --dynamic-linker /lib/ld-linux-x86-64.so.2 -o main -L/lib -lc
推荐阅读
- flutter - 如何使 NestedScrollView 在颤动中没有标题
- python - 音乐机器人 discord.py 的命令
- javascript - 如何创建单词进出动画
- mysql - MariaDB 拒绝 LOCALHOST 连接
- c++ - 创建线程时出现 C++ 错误,静态断言失败:转换为右值后,std::thread 参数必须是可调用的
- sql - 将 Bigquery 行内容拆分为新的单独列
- java - 如何让我的代码输出更多小数位
- r - 如何从具有特定条件的数据框中找到最大值?
- sql - 从postgresql中的三个表中获取数据
- c# - 如何在 C# 中为用户输入正确使用带有 null int 值的 while 循环