0

OSX 10.6.4(Snow Leopard)でプログラムを開発していますが、コンパイルされた製品を他のIntel Macで実行できるようにしたいと考えています。その中には、XCodeがインストールされていないものもあります。

簡単にするために、私は最初にHelloWorldプログラムを作成しました。

#include<stdio.h>
int main() {
    printf("Hello world!\n");
    return 0;
}

私がそれを次のようにコンパイルすると

gcc -static prog.c

次のエラーが発生します:

ld: library not found for -lcrt0.o

このライブラリがどこにあるかわかりません。現在、システム共有ライブラリはどこでも利用できるはずなので、Macで静的にコンパイルするべきではないと言う人もいます(サードパーティのライブラリは手動でリンクできます)。ただし、このHello Worldプログラムを別のMacで実行しようとすると、次のエラーが発生します。

 dyld: unknown required load command 0x80000022
 Trace/BPT trap

では、Macでプログラムをコンパイルして、配布できるようにするにはどうすればよいでしょうか。私が興味を持っているほとんどのコンピューターはIntelMacであるため、アーキテクチャの問題は発生していません。

4

2 に答える 2

2

使用しないでください-static。実行可能ファイルは、他の10.6.xx86Macで正常に実行されます。10.6より前のMacにデプロイする場合は、適切なSDKを使用する必要がありますが、それ以外は、開発者ツールがインストールされているかどうかに関係なく、「正常に機能する」はずです。

于 2010-09-28T20:52:09.013 に答える
1

XCodeを使用して、コマンドラインプログラムテンプレート(基本的なUnix実行可能ファイル)を使用して実行可能ファイルを作成することをお勧めします。これは、コンパイル対象のSDKやターゲットとするバージョンなどの多くのコンパイラオプションを管理するためです。 )。

私の推測では、デフォルトのコマンドラインコンパイルは現在のシステムライブラリ(10.6.4)に対してコンパイルされます。

于 2010-09-30T11:30:21.210 に答える