2012-07-03 8 views
12

今は、提供されているgccを使って特定の古いバージョンのlinux(SLED 10)で自分のC++ソフトウェアをコンパイルし、新しいglibcを持つようにほとんどの新しいバージョンで実行できます。問題は、古いgccはC++ 11をサポートしておらず、本当に新しい機能を使いたいと思います。新しいgcc/clangで古いLinuxをターゲットにすることはできますか? C++

私はいくつかのアイデアを持っていますが、他の人にも同じ必要があると確信しています。あなたのために実際に働いたのは何ですか?

アイデア:

  1. 新しいシステム、新しいglibcのへの静的リンクを構築します。 (不可能、そう?)
  2. 新しいシステムでビルドし、古いglibcをコンパイルしてリンクします。
  3. 更新されたgccを使用して古いシステムでビルドし、古いglibcとリンクします。
  4. 新しいシステムでビルドし、新しいglibcに動的にリンクし、RPathを設定し、glibcにインストーラを提供します。

私のソフトウェアはまた、プラグインをサポートし、SDKを持っています。私は本当に私の顧客が私の図書館を巨大な面倒なくコンパイルできると思っています。

ありがとうございます。アイデアは歓迎され、実績のあるソリューションが好まれます。

答えて

2

新しいgccでビルドします。古いマシンに新しいコンパイラをインストールするか、新しいマシンにコンパイルして、古いマシンに必要な動的ライブラリをインストールします。

それらは通常バージョン管理されているので、複数のlibcのバージョン(ともにlibstdC++が)単一のマシン上でサポートされていることに注意してください(すなわちのlibC.so.5、libc.so.6と、等)

+0

が、これは私のオプション3です?より新しいgccを古いlibcとリンクさせるか、新しいlibcとリンクして配布することを提案していますか? – David

+0

おそらくオプション4に近いでしょう。libcやlibstdC++を配布しないでください。対象のマシンに正しいverstionsがインストールされていることを確認してください。 –

関連する問題