gpt4 book ai didi

autotools - LDFLAGS 在带有 libtool 的自动工具中的使用

转载 作者:行者123 更新时间:2023-12-03 09:25:40 26 4
gpt4 key购买 nike

根据操作系统的不同,我在configure.ac中定义了一个特殊的LDFLAGS:

AC_CANONICAL_HOST
if test "$host_os" = cygwin
then
LDFLAGS="$LDFLAGS -Wl,-no-undefined"
export LDFLAGS
fi
AC_SUBST([LDFLAGS])

该包使用 AC_PROG_LIBTOOL,并且当 LDFLAGS 传递给 libtool 时,-Wl 前缀保留,链接器无法理解选项。如果我删除此前缀,AC_PROG_CXX 宏就会失败,因为 GCC 会因 -no-undefined 本身而阻塞。我做错了什么?

LDFLAGS 未提及 Makefile.am,但我已通过运行 make -n 确保在 libtool 命令中尊重它>.

我在 Cygwin 1.7.28(0.271/5/3) 下使用 autoconf 2.69、automake 1.14、gmake 4.0 和 gcc 4.8.2

编辑:我有几十个 Makefile.am,其中一半以上来自外部库 - 我更喜欢从中央位置控制这些标志。

最佳答案

Libtool 有一个 -no-undefined 选项。

GNU ld 有一个 --no-undefined 选项。

您应该让 libtool 从 Makefile.am 内部了解它,并让它负责转发到链接器:

configure.ac

AC_CANONICAL_HOST
if test "$host_os" = cygwin
then
EXTRA_LDFLAGS="-no-undefined"
fi
AC_SUBST([EXTRA_LDFLAGS])

Makefile.am

AM_LDFLAGS = $(EXTRA_LDFLAGS) ...

作为一般规则,您不应该乱用configure.ac 中的CPPFLAGS、LDFLAGS 等,因为用户可能需要在调用“make”时更改它们。

关于autotools - LDFLAGS 在带有 libtool 的自动工具中的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21840315/

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