OSDev

для всех
Текущее время: 13 ноя 2018, 23:42

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
 Заголовок сообщения: makefile для ОС
СообщениеДобавлено: 01 ноя 2008, 12:34 

Зарегистрирован: 21 сен 2007, 17:24
Сообщения: 1070
Откуда: Балаково
Как делаются makefile для компиляции ОС? Какая основная структура и ключи сборки, как учитывать сложную структуру проекта, и т.д.? Тоесть всё про makefile.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: makefile для ОС
СообщениеДобавлено: 01 ноя 2008, 17:35 

Зарегистрирован: 26 апр 2007, 16:22
Сообщения: 69
Я использовал сильно упрощенную систему сборки от Linux'а. В двух словах:
главный Makefile определяет все базовые target'ы (.o, хотя тебе советую сделать .c.o, так удобнее, и собственно ядро), и инклудит Makefile'ы для различных частей ядра. В них определяется переменная objects-XXX (XXX -- назание части), в которую заносится список исходников. При обработке в основном Makefile из списка исходников получается список объектников, который и обрабатывается.
См. в git


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re^2: makefile для ОС
СообщениеДобавлено: 02 ноя 2008, 17:04 

Зарегистрирован: 21 сен 2007, 17:24
Сообщения: 1070
Откуда: Балаково
Хороший пример. А что такое .c.o?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re^3: makefile для ОС
СообщениеДобавлено: 02 ноя 2008, 21:57 

Зарегистрирован: 26 апр 2007, 16:22
Сообщения: 69
Обычно код на C компилируется в объектники с расширением .o. Но, если в системе сборки изначально задается список исходников, дописать .o в конец проще, чем менять исходное расширение. (ср. test.c -> test.o или test.c -> test.c.o)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: makefile для ОС
СообщениеДобавлено: 03 ноя 2008, 09:55 
Эммм, так ведь в gcc все равно придется писать выходной файл. А строка test.o пишется проще чем test.c.o Или вы их бех компиляции собираете?


Вернуться к началу
  
 
 Заголовок сообщения: Re^2: makefile для ОС
СообщениеДобавлено: 03 ноя 2008, 11:27 

Зарегистрирован: 22 май 2007, 15:29
Сообщения: 290
вот тебе пример:
Код:
all: target

target: main.o foo.o bar.o
 $(CC) $(CFLAGS) $^ -o $@ $(LDFLAGS)

%.o: %.c
 %(CC) $(CFLAGS) $(CPPFLAGS) $< -o $@


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re^2: makefile для ОС
СообщениеДобавлено: 03 ноя 2008, 15:49 

Зарегистрирован: 26 апр 2007, 16:22
Сообщения: 69
Так у меня в списки объектов для компиляции заносятся исходники, чтобы можно было по ним пройтись makedepend'ом (скрипт, который генерирует и добавляет в конец Makefile'а зависимости c-кода от хедеров), а в качестве зависимостей для ядра нужно указывать .o. А добавить в конец .o проще, чем заменять на него .c. (ср. addsuffix и много patsubst, для каждого из возможных расширений: .c, .cpp, .S)


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB