Главная » Все файлы » Просмотр файлов из архивов » Документы » Процесс компиляции программ на языке C

Процесс компиляции программ на языке C (Семинары), страница 3

2019-04-28СтудИзба

Описание файла

Файл "Процесс компиляции программ на языке C" внутри архива находится в папке "Семинары". Документ из архива "Семинары", который расположен в категории "". Всё это находится в предмете "архитектура эвм" из 2 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .

Онлайн просмотр документа "Процесс компиляции программ на языке C"

Текст 3 страницы из документа "Процесс компиляции программ на языке C"

Проверка осуществляется рекурсивно: так, при сборке цели hello, make сначала проверяет, надо ли сделать все его зависимости, то есть файлы main.o, factorial.o и hello.o.

Если команда сборки какой-то из целей выдает ошибку (код завершения, отличный от 0), make останавливает процесс компиляции и не пытается собирать остальные цели. На самом деле, make имеет опции, выключающие это поведение и заставляющие make собрать все цели, какие можно. При сборке из командной строки это не всегда удобно, так как при прекращении сборки последней строкой выдачи, скорее всего, будет сообщение об ошибке, из-за которой сборка остановилась, а при продолжении сборки это сообщение может быть сложно найти в общей выдаче.



Комментарии и переменные

В Makefile, кроме правил, могут также содержаться комментарии и переменные.

Комментарии — это строки, начинающиеся с символа #, заканчивающиеся символом <NEWLINE> и содержащие произвольный текст. Комментарии игнорируются утилитой make.

Есть любители вставлять в начало Makefile магическую последовательность #!/bin/make

Эта строка является комментарием с точки зрения make, но обозначает такой файл как интерпретируемую программу с интерпретатором /bin/make с точки зрения системного вызова exec(2) и, следовательно, с точки зрения shell. Такой Makefile можно сделать исполняемым командой chmod +x и запускать из shell без явного вызова make, командой ./Makefile.

Переменные — это текстовые строки вида NAME=VALUE, похожие на переменные среды или переменные shell. К значениям переменных можно обращаться, используя синтаксис $(NAME). Переменные можно использовать в любых местах Makefile. Значения переменных можно задавать внутри самого Makefile или в командной строке make, передавая в качестве параметра строку NAME=OTHER_VALUE. При этом, значения, заданные в командной строке, «сильнее» значений, заданных в файле.

Также, запустив make с опцией -e, можно заставить его брать значения переменных из переменных среды.

Пример файла с использованием комментариев и переменных:

# Если пользователь захочет собирать программу при помощи GCC, # он может запустить сборку командой make CC=gcc # или командами export CC=gcc; make -e CC=сс CFLAGS=-Wall -O OBJECTS=main.o factorial.o hello.o hello: $(OBJECTS) $(CC) $(OBJECTS) -o hello main.o: main.c functions.h $(CC) -c $(CFLAGS) main.c factorial.o: factorial.c functions.h $(CC) -c $(CFLAGS) factorial.c hello.o: hello.c functions.h $(CC) -c $(CFLAGS) hello.cpp # Обратите внимание, что эта версия Makefile гораздо умнее предыдущей # Она удаляет только объектные файлы, относящиеся к проекту # а не все объектные файлы в текущем каталоге. clean: rm -rf $(OBJECTS) hello

Детальное описание make(1) может быть найдено в системном руководстве man и в многочисленных учебниках и туториалах, доступных в сети Интернет. Подробная документация по dmake доступна на сайте http://docs.oracle.com.

Автоматическая генерация Makefile

make предоставляет ряд средств, упрощающих создание больших Makefile для больших проектов. Самая сложная задача при поддержании Makefile — это правильное отслеживание зависимостей, в первую очередь — отслеживание, какие .c файлы включают какие заголовочные файлы. Для решения этой задачи в рамках проекта GNU была реализована утилита automake (не входит в стандартную поставку Solaris, но может быть собрана из исходных текстов).

Большинство современных интегрированных сред разработки на C/C++, например, SunStudio, включают простые для использования средства автоматической генерации и поддержки Makefile. К сожалению, генерируемые такими средами Makefile не очень-то удобны для последующей ручной модификации.

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5288
Авторов
на СтудИзбе
417
Средний доход
с одного платного файла
Обучение Подробнее