一个快速的问题。我在示例 Makefile 中找到了“DLDFLAGS”和“LDFLAGS”。使用的编译器是gcc。看起来它们都用于链接器。我想知道它们之间有什么区别。
最佳答案
LDFLAGS
通常设置为包含传递给链接器的选项(因此可能包括所需的库)。连同CFLAGS
,这些通常设置为开发人员环境变量和 make
的一部分。将了解它们,因此将积极查看它们是否已设置并将它们传递给编译器。
例如,如果我设置 CFLAGS
在我的环境中 -O2 -Wall
,那么如果我输入 make hello
如果没有 Makefile,make 将自动调用编译器作为 gcc -O2 -Wall hello.c -o hello.o
.然后它会以类似的方式调用链接器,在 LDFLAGS
中添加标志到命令行。
Makefile 可以显式覆盖 LDFLAGS
和 CFLAGS
.DLDFLAGS
另一方面,它不是众所周知的/定义的变量,因此它可能特定于该特定的 Makefile。您必须阅读 Makefile 以了解它的使用方式。例如,如果 LDFLAGS
,它可以定义要使用的链接器标志。已设置 - 阅读 Makefile 以确保确定。
关于gcc - DLDFLAGS 和 LDFLAGS 有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8931770/