当我尝试编译静态时,我收到以下错误:
gcc defrag.c -o abc.exe --static
/usr/bin/ld: cannot find -lc
collect2: error: ld returned 1 exit status
然而,同样的事情在没有静态的情况下编译得很好:
gcc defrag.c -o abc.exe
问题:为什么在指定静态时编译失败?
答案 0 :(得分:3)
错误正在发生,因为“--static”表示链接命令中的所有后续库必须是静态的......但是您只有动态 libc你的系统。
推荐的解决方案:
gcc defrag.c -o abc -lc --static -lmystaticlib
如果您只是为了拥有静态exe而尝试创建一个静态exe - 我建议“不要”。共享库很好。出于许多不同的原因。
这是一个很好的链接: