静的ライブラリをコンパイルするときに、以前の最小カーネルバージョンを設定します
-
12-10-2019 - |
質問
私の分布(Arch Linux)は最近、そのツールチェーンの最小サポートされたLinuxカーネルバージョンを増加させました。静的にリンクしてからWebサーバーにアップロードするWebアプリケーションをコンパイルしています。Webサーバーのカーネルバージョンは、新しいツールチェーンにコンパイルされた静的ライブラリには古すぎます。 (サーバーで静的バイナリを実行しようとすると、セグメンテーション障害が発生します。)GNUツールチェーン(GCC、Binutils、GLIBC)を使用してアプリケーションをコンパイルする方法はありますか?
解決
GLIBCの互換性は、実際には一方向でのみ保証されています。 (古いバイナリは新しいシステムで機能します。その逆も同様です。必ずしもそうではありません。)
バイナリが古いシステムで動作することを保証するには、古いGLIBCとのリンクをコンパイルします。これを行う最も簡単な方法は、古い分布を見つけることですが、セットアップをお勧めします。クロスツール「または、ビルドシステムが使用するものとは異なるLIBCをターゲットにする同様のクロスコンパイルツールチェーン(これにより、システムが何であるかに関係なく、ホスト間で繰り返し可能なビルドが可能になります)。
他のヒント
ありがとう。また、以前のカーネルとの作業を可能にするGLIBCの-Enable-Kernelオプションも見つかりました。
所属していません StackOverflow