[применяется] только к make-файлу kbuild, в котором они назначены
означает, что флаги ссылки, определенные этой переменной в данном make-файле, используются только в правилах, появляющихся в том же make-файле. Они не наследуются от родительского make-файла, и они не передаются на под-make
s, контролируемые другими make-файлами.
[используется] для всех вызовов ld, происходящих во время рекурсивной сборки.
Это утверждение в целом об объекте, а не о конкретных флагах, обозначаемых при каком-либо конкретном использовании этого объекта. В нем говорится, что вы можете использовать переменную ldflags-y
в любом make-файле kbuild и ожидать, что поведение, описанное в вызовах docs-linker в правилах, появляющихся непосредственно в том же make-файле, будет использовать эти флаги, но они не будут передаваться автоматически sub- make
s в других каталогах.
С другой стороны, это ...
LDFLAGS ... [используется] для всех вызовов компоновщика.
... появляется в документации для сборочных файлов архитектуры. Суть этого, как описано в документации, состоит в том, чтобы определить флаги, подходящие для полной сборки и (по существу) всего в ней. Эта переменная должна быть определена только в таком make-файле, и в кавычке говорится, что определенные таким образом флаги компоновщика используются во всех прогонах компоновщика во время сборки, независимо от того, в каком make-файле появляется соответствующее правило (включая: в частности, в каталогах, которые не находятся в одном дереве с файлом make-архитектуры).
Далее в документах говорится, что ldflags-y
можно использовать для дальнейшей настройки, которую вы должны указать, чтобы указать и в прогонах компоновщика. Читая немного более внимательно между строк, вы должны ожидать, что (глобальный) LDFLAGS
появится в команде компоновщика раньше, чем (локальный) ldflags-y
.
Я не вижу никакой разницы между ними, учитывая Makefile m (и мы
тип марка м)
- предположим, LDFLAGS: = x, поскольку он применяется ко всем вызовам компоновщика, тогда все ld, вызываемые в любом сеансе сборки, начиная с
make m имеет значение x для LDFLAGS
Да и нет. Общий make-файл kbuild m
не должен давать определение для LDFLAGS
. Это относится только к соответствующей архитектуре make-файла. Непонятно, что произойдет, если make-файл kbuild сделает так или иначе, но я подозреваю, что он будет каскадно под make
s.
Кроме того, вы не должны пытаться напрямую make
поддерево, если оно настроено для kbuild. Система не предназначена для этого.
- предположим, что ldflags-y: = y, потому что если он применяется для всех рекурсивных вызовов ld, то для всех ld, вызванных (при любом запуске сеанса сборки
из make m) также имеет значение y для LDFLAGS
Нет. Возможность использовать переменную ldflags-y
для обеспечения локальной настройки флага ссылки применяется ко всем make-файлам kbuild. Конкретные флаги, предоставляемые таким образом определенным make-файлом, не касаются до make
s.