2011-01-08 6 views

答えて

3

最近のgccのバージョンは-march=nativeであり、コンパイラを実行しているマシンで使用可能なすべての命令セット拡張を使用するコードが生成されますが、実行時に拡張が利用可能であることを検出するバイナリは生成されません。使用可能な拡張機能を検出し、それに基づいて異なるコードパスを使用するコードを記述することは可能ですが(これはゲームエンジンのようなパフォーマンス重視のコードの一般的な手法です)、私はこの機能を自動的に生成するツールコードと異なるバージョンのコードが含まれています。この:あなたは(x86とARMのような)複数の異なるアーキテクチャ上で実行できるバイナリを作成する場合は

は、あなたがファットバイナリ、またはAppleのマーケティング用語で、ユニバーサルバイナリと呼ばれるものを作成する必要がありますアーキテクチャごとにコードをコンパイルし、異なるアーキテクチャのバイナリを同じファイルにリンクする必要があります。これは、オペレーティングシステムが適切なアーキテクチャのセグメントのみをロードする必要があることを知る必要があるため、fatバイナリをサポートするオペレーティングシステムでのみ機能します。

関連する問題