2017-02-17 12 views
1

私は最近、Solaris、HP-UXなどGNU/LinuxとUnixで動作するC++サーバアプリケーションを開発する立場にありました。私の会社は何も書いていないので、現代のC++を使って開発する方法を考えています。libstdC++を静的にリンクするのは良い方法ですか?

残念ながら、閉鎖されたプラットフォームの性質上、クライアントのマシンにlibstdC++ランタイムを降格させることは必ずしも可能ではないようです。私はlibstdC++が下位互換性があることを知っていますが、GCC 3.4または4.2(HP-UXの場合)をターゲットにしなければならず、その(Unixプロバイダ)のコンパイラはsucksです。

幸いにも法律上の理由でlinking libstdc++ statically is fineと申し立てられているようですが、 someoneは技術的な面でそれを推奨しています。しかし、それを行うことが(法的および技術的に)安全かどうかはわかりません。

libstdC++ staticをリンクするにはどうすればよいですか?この製品は、サードパーティの開発者用の実行可能な共有ライブラリを提供し、システムにないサードパーティの共有ライブラリをロードしません。

+0

大きな質問ですが、私はいつも法的な影響について自分自身に疑問を抱きました... – Kupto

答えて

1

私の50セント:

私は(特にWindows上で)静的なものをリンクの大ファンだけど、価格はケースのバグ/セキュリティ上の問題があるということです、あなたは再出荷する製品に持っていますまたは更新を提供する。私はLinux/Unixでこれをすることには消極的です。なぜなら、一般的にすべてのUnixオペレーティングシステムでバイナリ互換性がないからです。ターゲットシステム用にコンパイルした場合、問題はありません(ただし、更新プログラムでバグを管理する必要はありません)。

共有ライブラリにはライブラリをロードするための負荷がほとんどかかりませんが、これは今日ではごくわずかです。

法律上、あなたは大丈夫です(免責事項、私は弁護士ではありません、あなたの会社の弁護士に相談したいことがあります)。 GNUは、彼らのランタイムライブラリのexceptionあり:ソースコードは例外のセクション7の下に加えて、 バージョン3 GNU General Public Licenseの下で配布されて

「GCCランタイムライブラリ例外で を説明したが、バージョン3.1” 次のように(または ファイルCOPYING.RUNTIMEを参照)

それはそうではなかった場合は、何もpropietary製品は、Linux上で、これまで利用できなかっただろう。

また、ライセンスについて心配している場合は、Clangコンパイラの使用を検討することもできます。それはvery tolerant BSD licenseを持っています。あなたが何かを最初から書き直しているから。

関連する問題