2012-02-08 3 views
0

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

obj-m += hello.o 

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

+2

Если вы прочитали документацию для программы 'make', она точно скажет вам, что означает значение': = 'или' + = 'в make-файле. См., Например, [Руководство GNU Make] (http://www.gnu.org/software/make/manual/). –

+0

Я уверен, что пройдет через это. Спасибо. – elyon

ответ

2

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

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

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

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

Я также предлагаю вам прочитать документацию Kbuild о how to write module makefiles.

+0

Хорошо. Понял. Большое спасибо. Вернется, если возникнут какие-то сомнения. – elyon

Смежные вопросы