0

コンパイルに関するこの質問を参照してください。Mac 用の私のプログラムがどのように正しい -arch を使用し、それらの -arch フラグを使用してコンパイルし、 -arch フラグが私が使用しているシステム (ppc64 g5) 用であり、それでも間違ったオブジェクト コードを生成するのか理解できません。

また、クロス コンパイラを使用して Linux を使用し、Mac 用の 10.5 コードを生成した場合、これは上記で説明したものとどのように異なるでしょうか?

背景は、さまざまなApacheモジュールをコンパイルしようとしたことです。-arch ppc、ppc64 などでコンパイルします。エラーは発生せず、mod_whatever.so を取得します。しかし、apache は常にシンボルが見つからないと文句を言います。どうやら、ファイルの種類は ppc、ppc64、i386、x_64 (ユニバーサル バイナリ) であり、私が持っている他のすべての .so mod と一致しているように見えますが、コンパイラが生成するものと関係があるようです。

どうすれば自分のシステムで問題なくコンパイルできるのか理解できず、自分のシステムでは使用できないと言います。たぶん、コンパイラが実際に私に何を与えているのか理解していません。

編集: すべてのエラー メッセージと完全なプロセスは、こちらで確認できます。

ありがとうございました。

4

1 に答える 1

1

他のスレッドや他の場所を見て、G5 または OSX Server をインストールしていないので、いくつかのコメントや提案しかできませんが、おそらく役立つでしょう。

  1. 通常、O/S ベンダーがインストールしたソフトウェアを変更することはお勧めできません。新しい Apache モジュールをインストールすることは、たとえば既存のライブラリを上書きすることよりも問題は少ないですが、ソフトウェア アップデートによって変更が削除される可能性があるという点でベンダーに翻弄されます。最初に建てました。OS X の世界では、 MacPortsなどを使用して、Apache などのオープン ソース製品を完全に個別にインストールすることで、これを回避するのが一般的です。これには短所もあります。高度な独立性を実現するために、MacPorts は多くの場合、OS X に既に存在するものに対して多くの依存パッケージをダウンロードしてビルドしますが、余分なビルド サイクルとディスク容量以外には害はありません。 .

  2. とはいえ、Apple が提供するものを補う apache モジュールをビルドしてインストールすることは可能です。Apple がオープン ソース製品に加えた変更は、ここで公開されています。そこにあるさまざまなバージョンをドリルダウンして、ソース、Makefile、および適用されたパッチを含む apache ディレクトリを見つけることができます。それは助けになるかもしれません。

  3. ビルドする mod_*.so が本当に 64 ビットであり、64 ビット以外のライブラリに依存していないことを確認してください。を使用otool -L mod_*.soして、それぞれが参照する動的ライブラリfileを確認し、それらのライブラリで使用して、すべてに ppc64 バリアントがあることを確認します。

  4. 最新の開発者ツールを使用していることを確認してください (Xcode 3.1.3 が最新です)。

  5. 開発者ツール チェーンは多くのオープン ソース コンポーネントを使用していますが、Apple はそれらの多くを強化しており、OS X の ABI、ユニバーサル バイナリ サポート、ダイナミック ライブラリなどには大きな違いがあります。 Linux (またはその他の非 OS X プラットフォーム) 上のコードはサポートされておらず、実用的でもありません。

于 2009-08-12T02:21:12.323 に答える