在NASM x64(Linux Fedora)中使用printf编译报错求助
解决NASM x64(Fedora)中链接printf时的"cannot find -lc"错误
错误原因
你使用gcc -static尝试静态链接时,Fedora默认未安装静态版本的C标准库(glibc-static),导致链接器无法找到静态库文件libc.a,从而抛出"cannot find -lc"和链接失败的错误。
解决方案
方案1:安装静态C库(用于静态链接)
执行以下命令安装静态库包:
sudo dnf install glibc-static
安装完成后,重新运行原链接命令即可:
gcc -static -o printf printf.o
方案2:使用动态链接(推荐,无需额外安装)
直接去掉-static参数,使用默认的动态链接方式(Fedora默认已安装动态C库):
nasm -felf64 printf.asm gcc -o printf printf.o
运行生成的程序:
./printf
会输出:The number is: 10
代码正确性验证
你的汇编代码逻辑完全正确:
- 用
rdi传递格式化字符串地址,符合x64 System V调用约定 rsi传递整数参数10xor eax, eax告知printf没有浮点参数- 调用printf后通过
syscall正常退出
内容的提问来源于stack exchange,提问作者Vladimir Curiel
相关产品推荐
相关产品推荐

