gpt4 book ai didi

makefile - 静态和共享库的 Autotools 设置

转载 作者:行者123 更新时间:2023-12-02 19:40:22 25 4
gpt4 key购买 nike

我们有一个大型代码库,我正在将其转换为自动工具,以帮助定位多个平台/配置。基本上,我们有:

|-- configure.ac
|-- Makefile.am
|-- dependency1
| `-- Makefile.am
|-- dependency2
| `-- Makefile.am
`-- dependency3
`-- Makefile.am

依赖项文件夹在许多项目中都很常见,因此 Makefile.am 文件创建 libdependencyX.la 文件。然后,在根 Makefile.am 中,我使用 LIBADD 组合所有内容以创建最终的共享库。这一切都是作品创造的。

我们需要创建库的共享版本和静态版本。我该怎么办呢?所有依赖项都只需使用 LTLIBRARIES 来完成所有内容。

最初的解决方案只是一个巨大的 Makefile,它创建了一系列 .o 文件,然后构建生成的 .so.a最后。

更新2015-03-11

我遇到的问题是我可以获取静态或共享,但不能同时获取两者。最终库的根 Makefile.am 看起来像这样。

lib_LTLIBRARIES = libroot.la
libroot_la_SOURCES = root.c
libroot_la_LIBADD = dependency1/libdependency1.la \
dependency2/libdependency2.la \
dependency3/libdependency3.la
libroot_la_LDFLAGS = -shared

-shared 切换为 -static 会得到 .a,但我怎样才能同时获得两者呢? --enable-shared/--enable-static 似乎没有改变任何东西。

最佳答案

我的问题似乎出在 libretto_la_LDFLAGS 行。忽略它并使用 make install 给出指定前缀的 .a 和 .so 文件。

关于makefile - 静态和共享库的 Autotools 设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28972112/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com