1

makefileを介してgnumakeを使用してコンパイルされたC++ベースのプロジェクト(多くのソースファイル)があります。mylibなどのライブラリをリンクするアプリケーションがあります。現在、mylibは他の開発者によって所有されています。ライブラリバイナリが生成されるパスに、libmylib.so(共有オブジェクト)とlibmylib.a(静的ライブラリアーカイブファイル)の2つのファイルが存在します。

私のアプリケーションmakefileには、ライブラリmylibをリンクするためのリンカーオプションがあります。

LDFLAGS + =-l:mylib..。

質問は、ライブラリmylibのどのバージョンがアプリケーションの実行可能ファイルにリンクされるかです。

共有オブジェクトはlibmylib.soですか、それとも静的バージョンはlibmylib.aですか?

どのように決定されますか、これを管理する他のmakefileオプションはありますか?

4

1 に答える 1

4

組み込みLinux以外のデフォルトでは、動的リンケージを取得します。それを変更したい場合は、LDFLAGS;で指定できます。

LDFLAGS+= -Wl,--Bstatic -lmylib -Wl,--Bdynamic

(おそらく引用符が必要です)これは、このライブラリに対してのみ静的に切り替わり、その後、デフォルトの動的に戻ります。

于 2013-02-06T14:25:48.400 に答える