DLDFLAGS和LDFLAGS之间有什么区别

use*_*096 4 linker gcc makefile ldflags

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

Chr*_*s J 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以确定.