V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
acgnsstech
V2EX  ›  程序员

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

  •  
  •   acgnsstech · 2017-11-16 23:31:36 +08:00 · 4259 次点击
    这是一个创建于 2564 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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 02:54:11 +08:00 via iPhone   ❤️ 3
    macOS 不支持静态编译,因为苹果的系统调用不稳定,只有 libSystem 的 API 保持兼容,所以静态编译的程序升级系统可能会遇到问题…
    如果一定要静态编译的话,Github 上有一个项目叫 CSU-85,它可以提供需要的 crt0.o
    acgnsstech
        2
    acgnsstech  
    OP
       2017-11-17 08:59:44 +08:00
    @lqf96

    原来如此!


    谢谢~



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