72

次のプログラムを作成しようとすると、次のようになります。

#include <stdio.h>

int main(void)
{
  printf("hello world\n");
  return 0;
}

OS X 10.6.4では、次のフラグがあります。

gcc -static -o blah blah.c

これを返します:

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

他の誰かがこれに遭遇したことがありますか、それとも他の誰もまだ影響を受けていないものですか?修正はありますか?

ありがとう

4

3 に答える 3

85

これは機能しません。のmanページからgcc

このオプションは、すべてのライブラリ(libgcc.aを含む)も-staticでコンパイルされていない限り、MacOSXでは機能しません。libSystem.dylibの静的バージョンもcrt0.oも提供されていないため、このオプションはほとんどの人にとって役に立ちません。

于 2010-09-27T04:00:49.247 に答える
0

LLVM LLD リンカを試すこともできます - 私は 2 つの主要な OS 用にビルド済みのバージョンを作成しました - https://github.com/VerKnowSys/Sofin-llds

これにより、たとえば「Qemu」を適切にリンクできます。これは、Apple によってプリインストールされている ld では不可能です。

そして最後の 1 つは、libstdc++ を使用して GCC を自分でビルドすることです (しないでください)。

于 2016-09-16T16:54:11.310 に答える