Linux 実行可能ファイルを「一度コンパイルすれば、どこでも実行できる」ようにする必要があります。私のプログラムは非常に基本的なシステム コール (ネットワーク IO とファイル IO のシステム コール) しか使用しないため、理論的には可能です。実際には、それは別の話です。
私の開発プラットフォームは Ubuntu 12.04 で、これにはかなり最近のカーネル、glibc、およびツールチェーンが含まれています。最初に実行可能ファイルを静的にリンクしようとしましたが、実行可能ファイルは centos 5 (カーネル バージョン 2.6.18) での実行を拒否しました。実行可能ファイルが動的にリンクされている場合、動的ローダー (ld.so) は実行可能ファイルのロードを拒否します。私は修正した動的ローダー (カーネルのバージョンを無視するように修正しました) を出荷しようとしましたが、libc、libgcc_s はまだ動作しません。実行可能。
ロードしたいものすべてをやみくもにロードするダイナミックローダーが必要です。Linuxでそのような動的ローダーを知っている人はいますか? 正しい方向に向かっているかどうかはわかりませんので、どんな提案も大歓迎です。