【问题标题】:Automake linking modulesAutomake 链接模块
【发布时间】:2012-09-12 08:01:03
【问题描述】:

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

源代码
------拱门
----------avr
--------------i2c.c
-------系统
-----------thread.c

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

问候, 米歇尔

【问题讨论】:

    标签: gcc gnu ld autoconf automake


    【解决方案1】:

    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 便利库来代替:gnu.org/software/automake/manual/html_node/…
    猜你喜欢
    • 2014-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-04
    • 2013-04-01
    • 1970-01-01
    相关资源
    最近更新 更多