0

我正在尝试使用 libtool 编译一个库。问题是我在几个目录中有几个具有相同文件名的源文件。因此,在 autoreconf 期间,libtoolize 会向我抛出错误。

基本上,我的文件系统布局如下:

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

Makefile.am放置在 src/ 目录中,并由主 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 添加到每个子目录中。如何做到这一点?谷歌没有帮助找到解决方案。

4

2 回答 2

0

即使您在构建系统中完成了这项工作,静态库仍然会丢失部分代码,因为ar会愉快地覆盖具有相同名称的存档成员。

于 2011-01-28T15:43:47.270 回答
0

解决方案是在每个子目录中创建方便的 libtool 库(为它们添加前缀,这样它们就不会被安装),然后将它们链接到最终的共享库。

于 2011-01-28T15:54:44.060 回答