我只是不明白。
我相信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遇到这么多困难?
谢谢,扎克
答案 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/