私の本番環境では CentOS 5.2 および 5.5 バージョンが稼働しています。C/C++ を使用して新しいツールを開発し、この本番環境にデプロイする必要があります。
私は、Eclipse IDE で開発を行うために、デスクトップで GCC 4.4 を搭載した Fedora 14 を使用する予定でした。その後、実行ファイルを CentOS 5.2 または 5.5 にデプロイしたいと考えています。実稼働環境にも GCC 4.4 が存在します。
Fedora と CentOS はどちらも RHEL ベースなので、これは可能だと思いました。
それで、これをやってもいいですか?
それとも、開発デスクトップにも CentOS 5.2/5.5 が必要ですか?
ありがとう、アミット
答え1
静的バイナリをビルドすると、ほとんど何にでもビルドでき、どこでも実行できるようになります。静的にビルドする方法の詳細については、stackoverflow で回答を得るのが最適です。
ただし、異なる環境で構築するのは少しばかげているように思えます。開発マシン上に、本番環境と同一の VM または chroot を自分で構築してみてはいかがでしょうか。そうすれば、奇妙で予期しない非互換性が発生する可能性が大幅に低くなります。
答え2
CentOSに存在しないライブラリに対して動的にリンクする場合は、ライブラリも提供する必要があります。
ソース コードを提供し、CentOS ボックスでコンパイルする場合は、コード内で使用するヘッダーまたはソース ファイルを提供する必要があります。特別なものを使用しない場合 (たとえば、libc のみを使用する場合)、追加のライブラリを提供する必要はありません。
もう 1 つ注意する必要があるのは、CPU アーキテクチャです。64 ビット用のコードがある場合、32 ビットでは動作しません。
答え3
あなたできるこれをやってください。しかし、やるべきではありません。
最終的な製品パッケージはクリーンな環境でビルドするのがベストですが、開発デスクトップはそうではありません。CentOS は無料なので、キックスタートから毎回クリーンにするか、既知の正常なスナップショットから復元する特別なビルド環境を用意しない理由はありません。セットアップ作業は少しかかるかもしれませんが、その後は、結果のパッケージが、予期せぬ依存関係が誤って入り込むことなく機能することが分かります。
そして、本番環境でgccは必要でしょうか?間違っているそれ自体がそこに存在すること自体には問題はありませんが (攻撃者は独自のバイナリをコピーします)、一般的には、本番環境は可能な限り集中させる必要があります。