2011-02-01 12 views
7

スタティックライブラリと共有ライブラリの両方にプロジェクトとしてビルドしたいと思います。スタティックライブラリと共有C++ライブラリの両方を作成する

私は静的ライブラリがこれを必要としない間に、位置独立コードを得るために-fpicでコンパイルされたオブジェクトから共有ライブラリを作成する必要があることを知っています。これはすべて問題なく、共有ライブラリまたは静的ライブラリを作成できます。

異なるオブジェクトファイルを取得するために自分のソースを2回コンパイルしたくないので、これはどのように行われますか?私はhow to get a shared library based on a static oneと読む。ただし、この例では、-fpicを使用してスタティックライブラリを構築しています。これは道のりですか?これに気づくべきことはありますか?

スタティックライブラリと共有ライブラリの両方をコンパイルするのに、の共通のアプローチがありますか?例えば。最初の静的で、libに基づいて共有バージョンが作成されますか?

これにはさまざまなアプローチがあり、選択する際に考慮する必要があるかどうかを知りたいと思います。

Linuxでgcc4.4を使用しています。

ありがとうございます!

答えて

6

実際には、は、ソースを2回コンパイルするのは、です.PICを使用して1回、1回使用しないでください。そうしないと、静的ライブラリのPICオーバーヘッドや、OSによって再配置できない共有オブジェクト(実際にはライブラリの複数のクライアント間で共有されていないことを意味します)のいずれかが発生します。

+0

静的ライブラリと共有ライブラリの両方を同時に構築するには、オブジェクトファイルをどのように整理すればよいでしょうか? obj/static/...とobj/shared/...のようなもの? – murrekatt

+0

@murrekatt:そうです。それぞれのビルド構成に別々のディレクトリを使用して、完全に再コンパイルせずに多数を同時に使用できるように、それぞれを更新するのは良いことです。 1つのディレクトリの下にそれらのサブディレクトリを作成することは、あなたがメインのビルドディレクトリとして "obj"を使用し、それらの2つのビルドの名前を "静的"と "共有"する場合、 –

関連する問題