Gcc 汽车制造连接模块

Gcc 汽车制造连接模块,gcc,gnu,ld,autoconf,automake,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),并在编译所有子目录时为这些子目录对象文件编制一个程序。这可能吗?

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

src
------拱门
----------avr
--------------i2c.c
-------sys
-----------thread.c

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

格里茨,
Michel

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

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

我想我可以使用xxx_LIBADD=libName.a反复构建库。Automake只知道如何从对象构建静态存档。如果您想递归地将归档文件组合在一起,应该使用Libtool便利库:我想我可以使用xxx_LIBADD=libName.a来递归地构建一个库。Automake只知道如何从对象构建静态归档文件。如果要递归地将归档文件组合在一起,则应改用Libtool便利库: