0

プレーンな i386 と x86_64 の両方のアーキテクチャでコンパイルして動作するコードがあるとします。

DOS/Windows では、1 つの MZ-PE 実行可能ファイルをベイクすることができ、これは DOS で 1 つの機能を持ち、Windows で別の機能を持つことができます。または、OSX では、i386 と PPC アーキテクチャを単一のバイナリに結合する可能性があります。

Linux の i386+x86_64 (multiarch などを使わない) はどうですか? それは可能ですか、どうすればこれを行うことができますか?

4

1 に答える 1

1

以前は、ファイルの後半からアプリケーションの圧縮コピーを抽出するシェル スクリプトを使用していました。Solaris で sparc、x86 をサポート。これは比較的簡単な方法ですが、関連するプラットフォームに関連するバイナリのみを使用することに依存していました。

とは言っても、bin-i386andbin-x86_64ディレクトリにコピーを作成$(uname -m)し、スタブ シェル スクリプトで使用して、関連するバイナリに移動する方がはるかに簡単です。

#!/bin/bash -p

exec ${0%/*}/bin-$(uname -m)/${0##*/} "$@"

非マルチアーキテクチャ 64 ビット システム用に 32 ビット バイナリを出荷しようとしている場合、ほとんどのアプリケーションは動的リンクでコンパイルされるため、ライブラリは追加の問題です。multiarch を使用しない場合は、*関連するすべてのライブラリ (ランタイム リンカーを含むld.so) を出荷し、 を使用しLD_LIBRARY_PATHて適切なライブラリを選択する必要があります。

于 2013-10-03T07:20:35.703 に答える