はい、可能ですが、ほとんど役に立ちません。私はなぜに入る前に、ここでは1を作成する方法は次のとおりです。
#ifdef __LP64__
int main(void)
#else
int derp(void)
#endif
{
return 123;
}
は、64ビットの実行可能ファイルとして、それをコンパイルし、32ビット共有ライブラリ:
gcc -o t t.c -Wall
gcc -m32 -o t.dylib -Wall t.c -shared
は、このCファイルを取ります
し、それらを一緒にスマッシュ:
今
lipo -create -output t.fat t t.dylib
、なぜという有用ではないことになっていますか?
アーキテクチャごとに1つのバイナリに制限されているため、どのスライスを使用するかをほとんど制御できません。
- i386の
- x86_64の
- x86_64h
- ARMv6の
- armv6m
- のARMv7
- armv7s:
理論的には、あなたは同じファットバイナリ内のすべてのこれらのアーキテクチャ用のスライスを持つことができます
- armv7k
- armv7m
- arm64
だから実行、dylib、リンカーおよび1つのファットバイナリにカーネル拡張を破ることができますが、あなたは苦労そこから有益なものを取得する必要があるだろう。
最大の問題は、OSがどのスライスを読み込むかを選択することです。実行ファイルの場合は、実行中のプロセッサに常に最も近いものになります。 dylib、dylinkers、kextsの場合、プロセスが32ビットまたは64ビットであるかどうかが最初に判断されますが、その区別が行われると、そこにあるCPUのスライスに最も近いスライスも得られます能力。
Mac OS X 10.5に戻ってみると、64ビットのバイナリを32ビットのkextにバンドルして読み込んで読み込めます。しかし、その外で私はこれのユースケースを考えることができません。