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

2017-11-16 23:31:36 +08:00
 acgnsstech
g++ -static -o helloworld helloworld.cpp
出错提示:
ld: library not found for -lcrt0.o
collect2: error: ld returned 1 exit status
查了一下有说 mac 下的 c 编译器不支持静态编译参数。。。


为什么呢?
4070 次点击
所在节点    程序员
7 条回复
lqf96
2017-11-17 02:54:11 +08:00
macOS 不支持静态编译,因为苹果的系统调用不稳定,只有 libSystem 的 API 保持兼容,所以静态编译的程序升级系统可能会遇到问题…
如果一定要静态编译的话,Github 上有一个项目叫 CSU-85,它可以提供需要的 crt0.o
acgnsstech
2017-11-17 08:59:44 +08:00
@lqf96

原来如此!


谢谢~



看来苹果已经把 BSD 改得面目全非了。。。
zj299792458
2017-11-17 09:48:11 +08:00
@lqf96 Linux 上静态库编译的时候能链接动态库?我读书少不要骗我,-lcrt0.o 明显是个动态库,起码要-lcrt0.a 吧?
whatot
2017-11-17 10:02:21 +08:00
@zj299792458 链接过程中可以混合静态库与动态库的。
zj299792458
2017-11-17 10:11:21 +08:00
@whatot 普通的编译可以,问题是这个是加了-static 静态编译?链接了动态库还怎么静……
whatot
2017-11-17 12:02:03 +08:00
whatot
2017-11-17 12:02:22 +08:00
用现代化一些的参数吧

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/407074

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX