2017-11-17 17 views
2

謝罪これはSOよりも多くのサーバー障害であるが、それはそうここにコーディングに関連している場合... 以前のバージョン

I持っている誰か、私はRHEL 7でコンパイルしようとしている他の人のコードが、とのバイナリ互換性を維持私はRPMファイルを作成して出力するために独自のRPM仕様ファイルを作成しました。 RPMはRHEL 6とRHEL 7の両方でうまく構築されますが、RHEL 7でRPMをビルドすると、GLIBCのバージョンによってRHEL 6にインストールできるRPMは生成されません。

結果のバイナリを以前のバージョンのGLIBCに満足させ、RHEL 6にインストールできるように、どこかにビルドに追加できるシンプルなスイッチがありますか?

実際にRHEL 7のバイナリは現在のところ必要ありません。RHEL 7のデベロッパーボックスでRHEL 6をコンパイルできるようにしたいと思います。

+0

短い答えは「いいえ」です - UNIXは「より新しいビルド、古いバージョンで実行」コンパイルモデルをサポートしていません。 'chroot'を使うかクロスコンパイラを作る必要があります。最も簡単な解決策は、サポートしたいと思う最も古いシステム(おそらくVM内)を構築することです。 –

答えて

1

Red Hat Enterprise Linux 7システムでmock(悲しいことにEPELのみ)を使用してRed Hat Enterprise Linux 6 chrootを作成することができます。 Tier 1 ABIとの互換性を持つライブラリのみを使用すると、アプリケーションは再コンパイルせずにRed Hat Enterprise Linux 7で引き続き実行されます。サポートされる最も古いリリース(アプリケーションの観点から)を構築することは、実際にこれを行う唯一の方法です。より新しいC++コンパイラが必要な場合、それがRed Hat Enterprise Linux 7上に構築されている理由ではなく、Developer Toolset(DTS)を使用することを検討してください。

ティア1ライブラリーは、Application Compatibility Guideに記載されている。これまでのパッケージのリストにはPDFの添付ファイルがあるはずですが、今はアクセスできません。

+0

あなたの答えをありがとう。とにかく私は別のRHEL 6ビルドサーバーを持っているので、私は自分のCDシステムのビルドをそれだけでターゲットにする必要があると思います。 – Chris

関連する問題