1

我对 automake/autoconf 有疑问。我将首先向您展示我的源代码树的布局:

src
------arch
----------avr
--------------i2c.c
--------sys
------ -----线程.c

现在我的问题。完全编译arch/avr/i2c.c和sys/thread.c并不难。但我实际上想要的是部分编译我的所有子目录(使用 gcc -c),然后将一个子目录中的所有对象链接在一起(ld -r),并在编译所有子目录时制作这些子目录对象文件的程序。这可能吗?如果可以,怎么做?

格雷茨,米歇尔

4

1 回答 1

5

Automake 不支持ld -r,我认为libtool也做不到。通常的设置是为每个目录构建一个静态存档,并将主程序与这些静态存档链接。

你可以在arch/avr/Makefile.am

noinst_LIBRARIES = libavr.a
libavr_a_SOURCES = i2c.c ...

类似的东西sys/src/Makefile.am看起来像

SUBDIRS = arch sys .
bin_PROGRAMS = foo
foo_SOURCES = main
foo_LDADD = arch/avr/libavr.a sys/libsys.a
于 2012-09-20T05:38:51.837 回答