Адресация объектных файлов в Linux Makefile - PullRequest
0 голосов
/ 08 февраля 2012

Я пишу простой драйвер устройства в Linux.В make-файле мы обычно пишем первую строку как

obj-m += hello.o 

, где hello - записанный модуль.Я видел в других make-файлах символ +=, заменяемый := и некоторыми другими.В чем значительная разница между этими двумя вариантами, а также каковы возможные варианты?

1 Ответ

2 голосов
/ 08 февраля 2012

На самом деле, Kbuild сбрасывает obj-m вместе с некоторыми другими переменными (см. scripts / Makefile.build ) перед включением пользовательского Makefile, поэтому нет никакой разницы между += и := назначениями (при условии что есть единственная hello.o строка).

Лично я предпочел бы добавить назначение (+=). Это предотвращает некоторые глупые ошибки, такие как:

obj-m := hello.o
obj-m := world.o

Если последняя строка является копией-вставкой первой, и вы забыли изменить тип назначения на +=, то вы получите только скомпилированную world.o (без hello.o).

Я бы также посоветовал вам прочитать документацию Kbuild о том, как писать make-файлы модулей .

...