В чем разница между DLDFLAGS и LDFLAGS
Быстрый вопрос Я нашел и "DLDFLAGS", и "LDFLAGS" в образце Makefile. Используется компилятор gcc. Похоже, они оба используются для линкеров. Мне интересно, в чем разница между ними.
2 ответа
LDFLAGS
обычно содержит параметры, которые передаются компоновщику (может включать в себя необходимые библиотеки). Вместе с CFLAGS
, они часто устанавливаются как часть переменных среды разработчика и make
будет знать о них, поэтому будет активно искать, установлены ли они, и передавать их компилятору.
Например, если я установлю CFLAGS
в моем окружении -O2 -Wall
тогда, если я наберу make hello
без Makefile, make автоматически вызовет компилятор как gcc -O2 -Wall hello.c -o hello.o
, Затем он вызовет компоновщик аналогичным образом, добавив флаги в LDFLAGS
в командной строке.
Makefiles могут явно переопределить оба LDFLAGS
а также CFLAGS
,
DLDFLAGS
с другой стороны, это не очень известная / определенная переменная, поэтому она может быть специфичной для данного конкретного Makefile. Вам нужно прочитать Makefile, чтобы узнать, как он используется. Он может, например, определить флаги компоновщика, чтобы использовать, если LDFLAGS
установлен - прочитайте Makefile, чтобы узнать наверняка.
Не DLDFLAGS
просто флаг прекомпилятора, который определяет макрос с именем "LDFLAGS"?
Из руководства по gcc:
Имя
Predefine name as a macro, with definition 1