最新のLinuxマシンでプログラムを静的にコンパイルしてリンクし、9年前の別のLinuxで実行しました。「致命的:カーネルが古すぎます」というエラーが表示され、終了しました。具体的には、新しいものはFedora 18(gcc 4.7.2、glibc 2.16、カーネル3.7.2)であり、古いものはRHEL4.8(glibc 2.3.4、カーネル2.6.9)です。静的リンクであるため、glibcのバージョンは重要ではありません。ここでの問題は、プログラムが古いカーネルにないシステムコールを呼び出すことだと思います。
古いシステムでの開発が選択肢にない場合、新しいシステムでプログラムをビルドし、古いシステム(またはさらに良い方法、両方)で実行するにはどうすればよいですか?古いシステムコールのみを呼び出す互換モードでgccを実行する方法を探していました。まだ運がない。