【发布时间】:2012-02-14 10:47:15
【问题描述】:
一个简单的问题。我在示例 Makefile 中找到了“DLDFLAGS”和“LDFLAGS”。使用的编译器是 gcc。看起来它们都用于链接器。我想知道它们之间有什么区别。
【问题讨论】:
-
我猜可能是动态链接器标志。我在网上找不到准确的信息。你能告诉我们
DLDFLAGS的值是多少吗?
标签: gcc linker makefile ldflags
一个简单的问题。我在示例 Makefile 中找到了“DLDFLAGS”和“LDFLAGS”。使用的编译器是 gcc。看起来它们都用于链接器。我想知道它们之间有什么区别。
【问题讨论】:
DLDFLAGS的值是多少吗?
标签: gcc linker makefile ldflags
LDFLAGS 通常设置为包含传递给链接器的选项(因此可能包括所需的库)。与CFLAGS 一起,这些通常设置为开发人员环境变量的一部分,make 会知道它们,因此会主动查看它们是否已设置并将它们传递给编译器。
例如,如果我在我的环境中将CFLAGS 设置为-O2 -Wall,那么如果我在没有Makefile 的情况下键入make hello,make 将自动调用编译器为gcc -O2 -Wall hello.c -o hello.o。然后它会以类似的方式调用链接器,将LDFLAGS 中的标志添加到命令行。
Makefile 可以显式覆盖 LDFLAGS 和 CFLAGS。
另一方面,DLDFLAGS 不是众所周知/定义的变量,因此它可能特定于特定的 Makefile。您必须阅读 Makefile 以了解它的使用方式。例如,如果设置了LDFLAGS,它可能会定义要使用的链接器标志 - 请阅读 Makefile 以确定。
【讨论】:
DLDFLAGS 不只是一个定义名为“LDFLAGS”的宏的预编译器标志吗?
来自 gcc 手册:
-D名称
Predefine name as a macro, with definition 1
【讨论】: