【问题标题】:compilation error if use --static flag with gcc如果将 --static 标志与 gcc 一起使用,则编译错误
【发布时间】:2012-10-17 20:49:57
【问题描述】:

当我尝试编译静态时,我收到以下错误:

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 

问:为什么指定static时编译失败?

【问题讨论】:

    标签: c gcc


    【解决方案1】:

    发生错误是因为“--static”表示链接命令中的所有后续库必须是静态的......但你只有一个dynamic libc你的系统。

    推荐解决方案:

    gcc defrag.c -o abc -lc --static -lmystaticlib

    如果您只是为了获得静态 exe 而尝试创建静态 exe - 我建议“不要”。共享库很好。出于许多不同的原因。

    这是一个很好的链接:

    【讨论】:

    • 谢谢保罗。我正在为嵌入式环境构建。为了避免将所有库与应用程序一起移动,我决定使用静态。
    • 您可能希望编译一个静态 libc。你也可以看看ELF Stratifier
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多