в чем разница между DLDFLAGS и LDFLAGS - PullRequest
4 голосов
/ 19 января 2012

Быстрый вопрос. Я нашел и "DLDFLAGS", и "LDFLAGS" в образце Makefile. Используется компилятор gcc. Похоже, они оба используются для линкеров. Мне интересно, в чем разница между ними.

Ответы [ 2 ]

8 голосов
/ 19 января 2012

LDFLAGS обычно содержит параметры, которые передаются компоновщику (поэтому могут включать в себя необходимые библиотеки).Вместе с CFLAGS они часто устанавливаются как часть переменных среды разработчика, и make будет знать о них, поэтому будет активно проверять, установлены ли они, и передавать их компилятору.

Например, если я установлю CFLAGS в моей среде на -O2 -Wall, то, если я наберу make hello без Makefile, make автоматически вызовет компилятор как gcc -O2 -Wall hello.c -o hello.o.Затем он вызовет компоновщик аналогичным образом, добавив флаги в LDFLAGS в командную строку.

Make-файлы могут явно переопределять как LDFLAGS, так и CFLAGS.

DLDFLAGS, с другой стороны, не является широко известной / определенной переменной, поэтому она может быть специфичной для данного конкретного Makefile.Вам нужно прочитать Makefile, чтобы узнать, как он используется.Например, он может определить флаги компоновщика для использования, если установлен LDFLAGS - прочитайте Makefile, чтобы узнать наверняка.

0 голосов
/ 10 января 2014

Не является ли DLDFLAGS просто флагом прекомпилятора, который определяет макрос с именем "LDFLAGS"?

Из руководства по gcc:

-D имя

Predefine name as a macro, with definition 1
...