を使用している共有ライブラリへのC++アプリケーションをリンクする必要があり、あなたが、私は、C++アプリケーションを記述する場合、既存のC++共有ライブラリlibAlpha1.so
、libAlpha2.so
、libAlpha3.so
などを利用したC++の共有ライブラリlibBeta.so
をコンパイルしましょうlibBeta.so
を直接使用する(したがって、間接的に他のライブラリを使用する)場合、アプリケーションをlibBeta.so
にのみリンクするか、アプリケーションをすべてのライブラリにリンクする必要がありますか?は、私は間接的
libBeta.so
はすでに他のライブラリにリンクされているため、すべてのライブラリへのリンクが冗長であると思われるため、libBeta.so
にリンクする必要があると私の直感でわかります。しかし、undefined reference to
のエラーは私の直感が間違っていることを証明しています。
誰かが私の直感が特定のケースで間違っているかもしれない理由を説明できますか?
PS:
- OS:Linuxの
- コンパイラ:G ++
EDIT
それは私がコンパイルのために使用したツールはコンパイルするための異なる振る舞いを持ち結局のところ実行可能ファイルと共有ライブラリをコンパイルします。共有ライブラリをコンパイルするときのサブライブラリーへのリンクは省略されていた:(
あなたは定義されていない参照リンカーエラーが発生したと言いますが、それらのエラーの内容を教えてください。 –