6

一个快速的问题。我在示例 Makefile 中找到了“DLDFLAGS”和“LDFLAGS”。使用的编译器是 gcc。看起来它们都用于链接器。我想知道它们之间有什么区别。

4

2 回答 2

9

LDFLAGS通常设置为包含传递给链接器的选项(因此可能包括所需的库)。与 一起CFLAGS,这些通常被设置为开发人员环境变量的一部分,并且make会了解它们,因此会主动查看它们是否已设置并将它们传递给编译器。

例如,如果我CFLAGS在我的环境中设置为-O2 -Wall,那么如果我make hello在没有 Makefile 的情况下键入,make 将自动调用编译器为gcc -O2 -Wall hello.c -o hello.o. 然后它将以类似的方式调用链接器,将标志添加LDFLAGS到命令行。

Makefile 可以显式覆盖LDFLAGSCFLAGS

DLDFLAGS另一方面,它不是一个众所周知/定义的变量,因此它可能特定于该特定的 Makefile。您必须阅读 Makefile 以了解它的使用方式。例如,它可能会定义要使用的链接器标志,如果LDFLAGS已设置 - 请阅读 Makefile 以确定。

于 2012-01-19T19:12:49.570 回答
0

DLDFLAGS只是一个定义名为“LDFLAGS”的宏的预编译器标志吗?

来自 gcc 手册:

-D 名称

Predefine name as a macro, with definition 1
于 2014-01-10T15:44:36.017 回答