静的ライブラリとしてコンパイルされた多くのシステムライブラリを備えたLinuxベースのOSがあります。
このようなライブラリをアプリケーションで使用して、最終的なバイナリにリンクするにはどうすればよいですか?
静的ライブラリとしてコンパイルされた多くのシステムライブラリを備えたLinuxベースのOSがあります。
このようなライブラリをアプリケーションで使用して、最終的なバイナリにリンクするにはどうすればよいですか?
静的にリンクすることを除いて、共有ライブラリを使用するのと同じように使用します。GCCの紹介-共有ライブラリと静的ライブラリの記事から始めましょう。
理解するのに苦労しています。あなたがのようなものとリンクしている場合
g++ -o myprog myprog.o obj1.o obj2.o -L/path/to/lib -L/path2/to/lib -llib1 -llib2 -lib3
ライブラリパス(/ path / to / lib、/ path2 / to / lib、およびシステム固有のディレクトリのセット)にliblib1.soが存在する場合、gccまたはg ++ラッパーを介して呼び出されたリンカーは「正しいこと(tm)」を実行します。システムライブラリがおそらくある場合)、liblib1.aが静的にリンクされていない場合は、動的にリンクされます。注意すべき唯一のことは、静的ライブラリに相互依存関係がある場合(lib1にはlib2が必要で、lib2にはlib1が必要)、それらを数回繰り返すか、ldの--start-group
and--end-group
オプションを使用して必要なライブラリをマークする必要がある場合があることです。一緒に考えます。