0

メインアプリケーションと2つのライブラリ(fooとbar)があります。fooはいくつかのメソッドでbarを使用し、LDADDで指定されています。私のメインアプリケーションはfooを使用し、間接的にbarを使用するため、MakefileにLDADD=fooがあります。

この場合、メインアプリケーションのLDADDにバーライブラリも追加しないと、コンパイルエラーが発生します。

未定義の参照。そして、fooの.soファイルにはbarの.soファイルが必要であると書かれています。

わかりません。LDADD = barを使用して(非静的)fooをコンパイルすると、fooを使用しているアプリをコンパイルするときに、なぜ再び必要になるのですか?

4

1 に答える 1

1

ソースツリーの一部として構築されたlibtoolライブラリであるfooかどうかを指定しません。barそうである場合、libtoolはリンクを取得する必要があります。つまり、ライブラリの一部としてfooが必要なので、次のようになります。bar

libfoo_la_LIBADD = ../bar/libbar.la # in: foo/Makefile.am

と、

prog_LDADD = ../foo/libfoo.la # in: app/Makefile.am
于 2012-11-09T13:10:28.957 に答える