gpt4 book ai didi

automake - 如何使用 Automake 为 "noinst"类库设置 LDFLAGS?

转载 作者:行者123 更新时间:2023-12-05 01:15:06 28 4
gpt4 key购买 nike

假设我开发了 libfoo.a 作为我编译过程的中间步骤。这是 Makefile.am 中的一行:

noinst_LIBRARIES = libfoo.a

这个库依赖于其他库。为了防止我收到 undefined reference 错误,我需要设置它的 LDFLAGS 多变的。这是我所做的:
libfoo_a_LDFLAGS = `pkg-config --ldflags some_lib`

但是, automake 失败并显示以下消息:
variable `libfoo_a_LDFLAGS` is defined but no program or library has `libfoo_a` as canonical name (possible typo)

我在这里做错了什么?它适用于 libfoo_a_SOURCES _CFLAGS .

最佳答案

使用简单的 *.a 中间库是不可能做到这一点的。那是因为中间库永远不会被链接,所以 LDFLAGS对它没有意义。中间库只是一个 ar 存档,它只是目标文件的集合。 ar 文件没有地方记录需要用于链接最终对象的标志。

正常的解决方案是按照 William Pursell 的建议进行操作:添加必要的 LDFLAGS到您在构建过程中创建的最终可执行文件或共享库。

另一种可能性是将您的中间库构建为 libtool *.la 库,即使您只是将它们用作中间库。当你这样做时,构建系统将生成一个共享对象(你最终不会使用它,因为你会将底层对象文件组合到你的实际构建工件中),但更重要的是它会创建一个 *.la 文件,它有一个地方可以记录这种依赖信息。 Automake 手册将其称为“Libtool 便利库”。为此,您当然必须使用 libtool,并切换到调用此 libfoo.la在您的 Makefile.am并在 noinst_LTLIBRARIES 中列出.但是除非您已经在使用 libtool,否则这可能比它的值(value)更麻烦。

关于automake - 如何使用 Automake 为 "noinst"类库设置 LDFLAGS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13828639/

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