すべてではない - - のライブラリを静的にlibtoolと、それはいくつかをリンクすることは可能ですか?

StackOverflow https://stackoverflow.com/questions/1943834

  •  20-09-2019
  •  | 
  •  

質問

私はautoconfを、automakeにとのlibtoolを使用して構築されたプロジェクトに取り組んでいます。プロジェクトは両方のバイナリおよびソース形式で配布されます。

Linuxでは、デフォルトでビルドスクリプトを動的にすべてのライブラリにリンクします。 Linuxユーザは、依存関係を処理するために、その分布のパッケージマネージャに依存することができますので、これは理にかなっています。

Windowsでは、デフォルトでビルドスクリプトは、静的にlibtoolの-all-staticオプションを使用して、すべてのライブラリにリンクします。依存関係のいずれもWindowsで提供されていないので、これは理にかなって、それはかなりのDLLのトンを配布についていじくるよりも、すべての依存関係を含む単一のバイナリを配布できるようにすると便利です。

OSX上では、依存関係のいくつかは、OSによって提供されており、いくつかはそうではありません。そのためには、動的および他のライブラリに静的にOSが提供するライブラリにリンクすると便利だろう。残念ながら、libtoolがオール・オア・ナッシング-all-staticオプションだ、ここで有用ではありません。

のいくつかののライブラリを静的、すべてではない?

にリンクするのlibtoolを得るための良い方法はあります

:私だけの静的ビルドするように、私は慎重に依存関係をコンパイルする可能性が実現可能です。しかし、私はむしろ私のプロジェクトのためのビルドシステムは、のダイナミックが利用可能であること、依存関係のビルドます。

静的の一般的なケースでは好調に推移しましたと思います

:もちろん、私はいつも上記のプラットフォームのすべての3つに動的にリンクされているC / C ++ランタイム・ライブラリー、のような本当に低レベルの依存関係にかかわっていないです。

役に立ちましたか?

解決

いくつかの研究の後、私は自分の質問に答えています。

あなたは、静的および動的なを持っている場合は、

は、インストールされ、ライブラリのビルド、そしてあなたは、動的なビルドに好みによってlibtoolのリンク、-lパラメータを使用しているライブラリにリンクします。あなたが-static-all-staticオプションを渡す場合には、利用可能な動的なビルドが存在しない場合は、静的ビルドにリンク、もしくはます。

のlibtoolは-lオプションの代わりに、そのライブラリへのフルパスを与えることによって、静的ライブラリにリンクするように強制することができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top