7

プロジェクトに静的ライブラリと共有ライブラリの両方を構築したいと思います。

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

異なるオブジェクトファイルを取得するためにソースを2回コンパイルしたくないので、これは通常どのように行われますか?静的ライブラリに基づいて共有ライブラリを取得する方法を読みました。ただし、この例は、-fpicを使用して構築されている静的ライブラリを示しています。これは行く方法ですか?これで知っておくべきことはありますか?

静的ライブラリと共有ライブラリの両方をコンパイルするための一般的なアプローチはありますか?たとえば、最初に静的で、ライブラリに基づいて共有バージョンが作成されますか?

これにはさまざまなアプローチがあるかどうか、そして選択するときに何を考慮すべきかを知りたいと思います。

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

前もって感謝します!

4

1 に答える 1

6

私が見た一般的なアプローチは、実際、ソースを2回コンパイルすることです。1回はPICを使用し、もう1回は使用しません。そうしないと、静的ライブラリのPICオーバーヘッド、またはOSによって再配置できない共有オブジェクト(事実上、ライブラリの複数のクライアント間で共有されないことを意味します)のいずれかになります。

于 2011-02-01T14:36:58.760 に答える