したがって、libtoolを実行し、ライブラリソースからファイルを取得した後libfoo.lo
、ターゲットシステムにインストールしてリンクできるように、ファイルを通常のLinux共有ライブラリfoo.o
に変換するにはどうすればよいですか?libfoo.lo
libfoo.so.1.0.0
1 に答える
質問で言及された出力から、-mode=compileモードでlibtoolを実行したように見えます。.aおよび.soライブラリを生成するには、-mode=linkを指定してlibtoolを再度実行する必要があります。
libtoolは、ライブラリを生成するために必要なgcc、ln ar、およびranlibの単純なラッパーです。gccを実行して、静的ライブラリと共有ライブラリが正しく作成されるようにするために必要なオプションを追加するだけです。
libtoolをコンパイルするときに、-fPICタグを挿入して、共有ライブラリに必要な位置に依存しないコードを確実に生成します。.oファイルは、静的な.aファイルにアーカイブできる通常のオブジェクトファイルです。.loファイルは、位置に依存しないコードを持つオブジェクトファイルであり、.soファイルにリンクできるようになりました。
libtoolをリンクすると、arを実行して静的ライブラリを作成するか、lnを実行してオブジェクトファイルを.so共有ライブラリにリンクします。
libtoolは、必要に応じて--mode=installを使用してライブラリをインストールすることもできます。
詳細については、 http://www.gnu.org/software/libtool/manual/libtool.htmlを参照してください。
実行可能ファイルをビルドするときは、コンパイルとリンクの2つの段階が常にあることを覚えておいてください。