gon*_*one 3 c macos linker static-linking
我只是不明白。
我相信gcc在调用gcc驱动程序时会自动链接libc.a。
但是,出于好奇,我想使用静态链接libc.a -static
,但是我得到了;
ld: library not found for -lcrt0.o
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)
我只是不明白?还有,什么crt0
?
我也读过一些帖子,说永远不要静态链接libc.a;为什么?从我所读的内容(当然我只是一个本科生)来看,我看不到静态链接的弊端。
我读了这篇文章,告诉我要添加的-lc
内容似乎可以正确编译,但这是静态链接还是仅添加了libc.dylib?
此外,每当我使用-static
flag时,都会收到从返回的相同错误ld
。我听不懂 我正在研究的文本显示了使用Unix环境的示例,并且由于OS X是基于Unix的,为什么我的Mac会有这么多困难?
谢谢,扎克
这是Apple关于库和开发应如何工作的决定之一。他们通过使它变得尽可能困难来阻止您构建静态二进制文件。
http://developer.apple.com/上有一些弱势解释,有用的提示是:
> If your project absolutely must create a statically linked binary,
> you can get the Csu (C startup) module from [Darwin][2] and try
> building crt0.o for yourself. Obviously, we won't support such an
> endeavor.
Run Code Online (Sandbox Code Playgroud)
如果您觉得自己在上游游泳,请习惯一下-因为使用应用程序沙箱,签名,更改模型等操作将不会很容易。
从好的方面来说,现在尝试在OSX上做unix东西是很危险的。
几个有用的链接:
http://reverse.put.as/2013/03/20/how-to-compile-gdb-in-mountain-lion-updated/ http://www.osxbook.com/