В чем разница между 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
Другие вопросы по тегам