自动连接模块

时间:2012-09-19 23:47:06

标签: gcc gnu ld autoconf automake

我遇到了automake / autoconf的问题。我将首先向您展示我的源代码树的布局:

src
------拱 ---------- AVR
-------------- i2c.c
------- SYS
----------- thread.c

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

格尔茨, 米歇尔

1 个答案:

答案 0 :(得分: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 看起来像

{{1}}