#linux #ubuntu #make #makefile
Подскажите, пожалуйста, как будут выглядеть вот эти строки в виде отдельных команд (как если бы это было записано не в makefile, а в compile.sh, скажем)? obj-m += OutIntTbl.o OutIntTbl-objs := module.o main.o $(KBUILD_EXTMOD)/main.o: main.asm nasm -f elf -o $@ $^ Запуск такой: make -C /usr/src/linux-headers-`uname -r` SUBDIRS=$PWD modules
Ответы
Ответ 1
добавьте к опциям/параметрам, с которыми запускаете программу make, опцию -n: $ make -n остальные-опции-и-параметры “No-op”. Causes make to print the recipes that are needed to make the targets up to date, but not actually execute them. Note that some recipes are still executed, even with this flag (see How the MAKE Variable Works). Also any recipes needed to update included makefiles are still executed (see How Makefiles Are Remade). мой вольный перевод: «не выполнять». эта опция заставит программу напечатать все рецепты (читай — shell-команды), необходимые для обновления целей, не выполняя эти рецепты. но даже с этой опцией некоторые рецепты всё равно будут выполнены (см. How the MAKE Variable Works). также будут выполнены те рецепты, которые необходимы для обновления подключенных makefile-ов (см. How Makefiles Are Remade).Ответ 2
Вы собираетесь собрать модуль для ядра Linux. Это очень сложный процесс, с точки зрения компиллятора и линковщика. Вот почему: Неизвестно, какие струтуры ядра Вы используете - нужны ВСЕ хидеры ядра. Неизвестно, какие функции ядра Вы вызываете, значит нужны объектные файлы ВСЕХ модулей ядра Если объектников ядра нет - их нужно скопилировать. Все... Для компилляции ядра нужно обработать конфигурационный файл ядра. Когда Александр Македонский, в юности, изучал геометрию, ему эта наука показалась слишком сложной и запутанной. Он спросил своего учителя - а нельзя-ли как-то покороче изучить это дело? :-) На что препод ответил, что в геометрии нет царских путей. Так вот я Вам скажу, что в разработке модулей ядра нет царских путей - это очень большая и сложная работа. Которую разработчики Linux пытаются хоть как-то облегчить с помощью obj-m и так далее. Короче - не получится!
Комментариев нет:
Отправить комментарий