V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
acgnsstech
V2EX  ›  程序员

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

  •  
  •   acgnsstech · Nov 16, 2017 · 4910 views
    This topic created in 3083 days ago, the information mentioned may be changed or developed.
    g++ -static -o helloworld helloworld.cpp
    出错提示:
    ld: library not found for -lcrt0.o
    collect2: error: ld returned 1 exit status
    查了一下有说 mac 下的 c 编译器不支持静态编译参数。。。


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

    原来如此!


    谢谢~



    看来苹果已经把 BSD 改得面目全非了。。。
    zj299792458
        3
    zj299792458  
       Nov 17, 2017
    @lqf96 Linux 上静态库编译的时候能链接动态库?我读书少不要骗我,-lcrt0.o 明显是个动态库,起码要-lcrt0.a 吧?
    whatot
        4
    whatot  
       Nov 17, 2017
    @zj299792458 链接过程中可以混合静态库与动态库的。
    zj299792458
        5
    zj299792458  
       Nov 17, 2017
    @whatot 普通的编译可以,问题是这个是加了-static 静态编译?链接了动态库还怎么静……
    whatot
        7
    whatot  
       Nov 17, 2017 via Android
    用现代化一些的参数吧
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2956 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 15:26 · PVG 23:26 · LAX 08:26 · JFK 11:26
    ♥ Do have faith in what you're doing.