如何判断来自 CFLAGS 的 gcc/autotools 选项也包含在 LDFLAGS 中?
How to tell what gcc/autotools options from CFLAGS also go in LDFLAGS?
我在 CFLAGS
中有一些 -f
编译器选项,比如 -fsanitize=address
不久前有人向我建议我也将这些选项放在 LDFLAGS
中,所以我做了.它没有造成任何问题。
我的问题是如何判断 CFLAGS
中的哪些编译器选项也应该包含在 LDFLAGS
中?它只是 -f
前缀选项吗?谢谢
I have some -f compiler options in CFLAGS like -fsanitize=address and
someone suggested to me a while ago that I also put those options in LDFLAGS
so I did. It hasn't caused any problems.
它不仅不会造成任何问题,而且这是构建经过清理的程序的唯一正确方法。
My question is how can I tell what compiler options from CFLAGS
also should go in LDFLAGS? Is it just the -f prefixed options?
如果你只是这样做就不会伤害
LDFLAGS = $(CFLAGS) $(LIBS)
编译器驱动程序 (/usr/bin/gcc
) 知道哪些高级选项适用于链接器,因此不需要的选项将被简单地过滤掉。如果您想知道这是怎么发生的,运行 gcc with -dumpspecs
flag:
$ gcc -dumpspecs
...
*link_command:
%{!fsyntax-only:%{!c:%{!M:%{!MM:%{!E:%{!S: %(linker) %{!fno-use-linker-plugin:%{!fno-lto: -plugin %(linker_plugin_file) -plugin-opt=%(lto_wrapper) -plugin-opt=-fresolution=%u.res %{!nostdlib:%{!nodefaultlibs:%:pass-through-libs(%(link_gcc_c_sequence))}} }}%{flto|flto=*:%<fcompare-debug*} %{flto} %{fno-lto} %{flto=*} %l %{no-pie:} %{pie:-pie} ...
这看起来有点难看,但实际上这只是一种用于标志翻译的迷你语言。给出了语法详细信息 here(尽管我严重怀疑您是否需要了解它们)。
我在 CFLAGS
中有一些 -f
编译器选项,比如 -fsanitize=address
不久前有人向我建议我也将这些选项放在 LDFLAGS
中,所以我做了.它没有造成任何问题。
我的问题是如何判断 CFLAGS
中的哪些编译器选项也应该包含在 LDFLAGS
中?它只是 -f
前缀选项吗?谢谢
I have some -f compiler options in CFLAGS like -fsanitize=address and someone suggested to me a while ago that I also put those options in LDFLAGS so I did. It hasn't caused any problems.
它不仅不会造成任何问题,而且这是构建经过清理的程序的唯一正确方法。
My question is how can I tell what compiler options from CFLAGS also should go in LDFLAGS? Is it just the -f prefixed options?
如果你只是这样做就不会伤害
LDFLAGS = $(CFLAGS) $(LIBS)
编译器驱动程序 (/usr/bin/gcc
) 知道哪些高级选项适用于链接器,因此不需要的选项将被简单地过滤掉。如果您想知道这是怎么发生的,运行 gcc with -dumpspecs
flag:
$ gcc -dumpspecs
...
*link_command:
%{!fsyntax-only:%{!c:%{!M:%{!MM:%{!E:%{!S: %(linker) %{!fno-use-linker-plugin:%{!fno-lto: -plugin %(linker_plugin_file) -plugin-opt=%(lto_wrapper) -plugin-opt=-fresolution=%u.res %{!nostdlib:%{!nodefaultlibs:%:pass-through-libs(%(link_gcc_c_sequence))}} }}%{flto|flto=*:%<fcompare-debug*} %{flto} %{fno-lto} %{flto=*} %l %{no-pie:} %{pie:-pie} ...
这看起来有点难看,但实际上这只是一种用于标志翻译的迷你语言。给出了语法详细信息 here(尽管我严重怀疑您是否需要了解它们)。