V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
acgnsstech
V2EX  ›  程序员

Mac OS 下怎样静态编译 C++?

  •  
  •   acgnsstech · 2017 年 11 月 16 日 · 4794 次点击
    这是一个创建于 2990 天前的主题,其中的信息可能已经有所发展或是发生改变。
    g++ -static -o helloworld helloworld.cpp
    出错提示:
    ld: library not found for -lcrt0.o
    collect2: error: ld returned 1 exit status
    查了一下有说 mac 下的 c 编译器不支持静态编译参数。。。


    为什么呢?
    7 条回复    2017-11-17 12:02:22 +08:00
    lqf96
        1
    lqf96  
       2017 年 11 月 17 日 via iPhone   ❤️ 3
    macOS 不支持静态编译,因为苹果的系统调用不稳定,只有 libSystem 的 API 保持兼容,所以静态编译的程序升级系统可能会遇到问题…
    如果一定要静态编译的话,Github 上有一个项目叫 CSU-85,它可以提供需要的 crt0.o
    acgnsstech
        2
    acgnsstech  
    OP
       2017 年 11 月 17 日
    @lqf96

    原来如此!


    谢谢~



    看来苹果已经把 BSD 改得面目全非了。。。
    zj299792458
        3
    zj299792458  
       2017 年 11 月 17 日
    @lqf96 Linux 上静态库编译的时候能链接动态库?我读书少不要骗我,-lcrt0.o 明显是个动态库,起码要-lcrt0.a 吧?
    whatot
        4
    whatot  
       2017 年 11 月 17 日
    @zj299792458 链接过程中可以混合静态库与动态库的。
    zj299792458
        5
    zj299792458  
       2017 年 11 月 17 日
    @whatot 普通的编译可以,问题是这个是加了-static 静态编译?链接了动态库还怎么静……
    whatot
        7
    whatot  
       2017 年 11 月 17 日 via Android
    用现代化一些的参数吧
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   1314 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 17:17 · PVG 01:17 · LAX 09:17 · JFK 12:17
    ♥ Do have faith in what you're doing.