2012-01-19 3 views
4

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

+0

Это может быть для динамических флагов компоновщика, я думаю. Я не мог найти точную информацию в Интернете. Можете ли вы рассказать нам, что такое значение 'DLDFLAGS'? –

ответ

7

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

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

Makefiles может явно переопределять как LDFLAGS, так и CFLAGS.

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

0

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

С GCC руководства:

-D имя

Predefine name as a macro, with definition 1 
Смежные вопросы