mac上静态链接的库

时间:2013-05-23 15:47:19

标签: c macos linker static-linking

我只是不明白。

我相信gcc会在调用gcc驱动程序时自动链接libc.a。

然而,出于好奇,我想使用-static静态链接libc.a,但我得到了;

ld: library not found for -lcrt0.o
collect2: ld returned 1 exit status

我只是不明白?另外,最新crt0

我还阅读过帖子说从不静态链接libc.a;为什么?从我所读到的(当然我只是一个本科生),我没有看到静态链接的缺点..

我读了this帖子,告诉我要添加-lc似乎正确编译,但这是静态链接还是只是添加了libc.dylib?

此外,无论何时我使用-static标志,我都会从ld返回相同的错误。我不明白?我正在编写的文本显示了使用Unix环境的示例,并且由于OS X是基于Unix的,为什么我的Mac遇到这么多困难?

谢谢,扎克

1 个答案:

答案 0 :(得分:4)

这是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.

如果您觉得自己正在向上游游泳,请习惯它 - 因为使用应用沙盒,签名,动态更改等不会更容易。

从好的方面来说,尝试在OSX上做unix的东西现在是前卫和危险的。

一些有用的链接:

http://reverse.put.as/2013/03/20/how-to-compile-gdb-in-mountain-lion-updated/ http://www.osxbook.com/