DLDFLAGS和LDFLAGS之间有什么区别

时间:2012-01-19 19:05:20

标签: gcc linker makefile ldflags

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

2 个答案:

答案 0 :(得分:8)

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以确定。

答案 1 :(得分:0)

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

来自gcc手册:

  

-D name

Predefine name as a macro, with definition 1