サードパーティの静的ライブラリの関数を使用する共有ライブラリを作成したいと考えています。たとえばfoo
、bar
からlibfoobar.a
. 私のメインアプリケーションもfoo
そのシンボルを使用しており、エクスポートすることを知っています。bar
したがって、リンクしてコードサイズを節約し、「foo」を未解決のままにしたいだけです(メインアプリケーションによって提供されるため)。を含めるlibfoobar.a
と、リンカーldは共有ライブラリに両方の関数を含めます。を含めないと、アプリケーション自体が にリンクしていないためlibfoobar.a
、ライブラリは関数にアクセスできません。質問:bar
bar
- 共有ライブラリを構築するときに特定のシンボルのみを解決するようにldに指示する方法はありますか?
- 共有
libfoobar.a
ライブラリに変わりますか? bar
から関数を含むファイルを抽出libfoobar.a
し、リンカー行でそれを指定しますか?- 心配する必要はありません。ランタイム ローダーは
bar
アプリケーションから使用するため、共有ライブラリ内の のコピーはbar
読み込まれませんか?