少し経験がありますが、異なる Linux バージョン (CentOS リリース 4.7 、Ubuntu 8.10)、異なるビット (例: 32 ビット、64 ビット) および異なるバージョンのコンパイラ (例: gcc/g++ 3.4.6 20060404 (Red Hat 3.4.6-10)、gcc/g++ (Ubuntu 4.3.2) -1ubuntu12) 4.3.2.)、実行可能ファイルまたはライブラリ ファイルをこれらの異なるマシンで使用できるようにするには? ここでの原則は何ですか?
たとえば、ネットワーク ファイル システムでは、CentOS リリース 4.7、x86_64 ad gcc/g++ 3.4.6 20060404 (Red Hat 3.4.6-10) のマシンで C++ プログラムからビルドされた実行可能ファイルがあります。驚いたことに、Ubuntu 8.10、x86_64、および gcc/g++ (Ubuntu 4.3.2-1ubuntu12) 4.3.2 を搭載した別のマシンで実行可能ファイルを使用できることがわかりました。また、最初のマシンで構築し、プログラムで使用したすべての共有ライブラリは、実行可能ファイルが 2 番目のマシンで実行されているときにエラーを報告しません。別のマシンでビルドされた実行可能ファイルを実行すると、信頼できる結果が得られるかどうか心配です。
別の例として、64 ビット マシンでビルドされた実行可能ファイルは 32 ビット マシンでは実行できないことを覚えています。しかし、逆に、32 ビット マシンでビルドされた実行可能ファイルを 64 ビット マシンで実行するにはどうすればよいでしょうか。さまざまなビット マシンでビルドおよび使用される C++ ライブラリ ファイルについてはどうでしょうか。
可能であれば、ウェブページや本など、私の質問に関連する参考文献を教えていただけますか?
よろしくお願いします!