0

libtool を使用してライブラリをコンパイルしようとしています。問題は、複数のディレクトリに同じファイル名の複数のソース ファイルがあることです。そのため、autoreconf 中に libtoolize がエラーをスローします。

基本的に、私のファイルシステムのレイアウトは次のとおりです。

src/
    Makefile.am
    file.cpp
    dir1/
        file.cpp
        ...
    dir2/
        file.cpp
        ...

Makefile.amsrc/ ディレクトリに配置され、 を使用してメインの Makefile.am によって呼び出されSUBDIRS = srcます。内容は次のようになります。

libfoo_la_SOURCES =    \
    file.cpp        \
    dir1/file.cpp   \
    dir2/file.cpp   \
    ...

ただし、autoreconf を実行すると、エラーが発生します。

src/Makefile.am: object `file.lo' created by `dir1/file.cpp' and `file.cpp'

それを解決する方法は?各サブディレクトリに Makefile.am を追加する必要があると思います。正確にそれを行う方法は?Google は解決策を見つけるのに役立ちませんでした。

4

2 に答える 2

0

ビルド システムでそれを機能させたとしても、 arは喜んで同じ名前のアーカイブ メンバーを上書きするため、スタティック ライブラリにはまだコードの一部が欠けています。

于 2011-01-28T15:43:47.270 に答える
0

解決策は、各サブディレクトリに便利な libtool ライブラリ (インストールされないように noinst というプレフィックスを付ける) を作成し、それらを最終的な共有ライブラリにリンクすることです。

于 2011-01-28T15:54:44.060 に答える