静的ライブラリをコンパイルするときに、以前の最小カーネルバージョンを設定します

StackOverflow https://stackoverflow.com/questions/4506654

質問

私の分布(Arch Linux)は最近、そのツールチェーンの最小サポートされたLinuxカーネルバージョンを増加させました。静的にリンクしてからWebサーバーにアップロードするWebアプリケーションをコンパイルしています。Webサーバーのカーネルバージョンは、新しいツールチェーンにコンパイルされた静的ライブラリには古すぎます。 (サーバーで静的バイナリを実行しようとすると、セグメンテーション障害が発生します。)GNUツールチェーン(GCC、Binutils、GLIBC)を使用してアプリケーションをコンパイルする方法はありますか?

役に立ちましたか?

解決

GLIBCの互換性は、実際には一方向でのみ保証されています。 (古いバイナリは新しいシステムで機能します。その逆も同様です。必ずしもそうではありません。)

バイナリが古いシステムで動作することを保証するには、古いGLIBCとのリンクをコンパイルします。これを行う最も簡単な方法は、古い分布を見つけることですが、セットアップをお勧めします。クロスツール「または、ビルドシステムが使用するものとは異なるLIBCをターゲットにする同様のクロスコンパイルツールチェーン(これにより、システムが何であるかに関係なく、ホスト間で繰り返し可能なビルドが可能になります)。

他のヒント

ありがとう。また、以前のカーネルとの作業を可能にするGLIBCの-Enable-Kernelオプションも見つかりました。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top