Программирование на C. Урок 20. MAKE. Наш первый Makefile. Часть 1
HTML-код
- Опубликовано: 13 июн 2024
- На данном уроке мы продолжим работать с раздельной компиляцией проекта и начнём знакомиться с утилитой make.
Мы напишем свой первый сценарий, позволяющий собрать проект из трёх модулей.
В данной части урока мы познакомились с утилитой make и уже написали небольшой сценарий, позволяющий нам прочувствовать принцип раздельной компиляции проекта.
Навигация по видео:
00:00 Введение
00:44 Утилита Make
06:15 Напишем первое правило и проверим его работу
08:48 Напишем второе правило, с помощью которого соберём исполняемый файл
10:02 Как среагирует Make на изменение в файле
11:51 Подключим ещё один модуль
12:47 Переменные в Make
Рекомендуется также перед просмотром данного урока просмотреть данные видео:
Урок 1. Наша первая программа. Часть 1 • Программирование на C....
Урок 2. Вывод данных разного типа • Программирование на C....
Урок 8. Условные операторы if, else, else if • Программирование на C....
Урок 16. Операторы присваивания • Программирование на C....
Урок 17. Приоритет операций • Программирование на C....
Урок 18. Инструкции break, continue, оператор goto и метки • Программирование на C....
Урок 19. Модульное программирование. Раздельная компиляция • Программирование на C....
Текстовая версия данной части урока здесь narodstream.ru/c-urok-20-make-...
Программирование на различных языках:
Группа в контакте public180157427
Группа в Facebook / 284342185817764
Группа в Одноклассниках ok.ru/group/55057282891996
Программирование микроконтроллеров:
Группа в контакте club116656325
Группа в Одноклассниках ok.ru/group/52987126153436
Группа в Facebook / 236905359999556
Мой сайт "Программирование МК" narodstream.ru/
Форум narodstream.ru/forum/
Вы можете помочь проекту:
ЮMoney
yoomoney.ru/to/41001176473465
Webmoney
Z341906933112
Карта Сбербанка (МИР)
2202201799288929
Можно в USDT
1) Сеть:TRC20
Адрес: TBBPFk5Widf1CYvF7Xk5ssKXeiPJHwtMgS
2) Сеть: BSC BNB Smart Chain (BEP20) (комиссия намного меньше)
Адрес: 0x2e38754DF1e54649Bf0D5CD6fD6D8c96a9f22f17
3) Сеть: Huobi ECO Chain (HECO) (комиссия еще меньше)
Адрес: 0x2e38754DF1e54649Bf0D5CD6fD6D8c96a9f22f17 - Наука
Большое спасибо! начинал смотреть в пол глаза. а потом как по накатанной, все затягивает))) думал проще бат файла ничего нет, а тут реально здорово! извините, не сдержался...спасибо за MAKE
Спасибо, долгожданная тема)
Наконец таки дождался этих серий , спасибо вам за труды , продолжайте в том же духе , MAKE с первого раза не зайдет , по себе знаю , тут нужна практика и побольше информации и примеров лайк однозначно , а те кто ставит дизлайки хоть что то бы прокоментировали , а то вот не зашло а почему не зашло автору не объяснили , объясните автору почему не зашло , он читает все коменты, трое не довольных а вот почему недовольны хоть бы отписались , если я чем то не доволен так я так и говорю чем , давай те все таки вместе поможем автору понять что нам не заходит он же для нас старается а не для себя
Думаю, что этим товарищам больше по душе CMD.
У меня почему то с таким кодом
main.o: main.c
gcc -o0 -g3 -Wall -c main.c
gcc -masm=intel -g3 -Wall -c main.c -S
объектный файл не создался, а создался файл "0" (ноль)
пришлось переделать в такой код
main.o: main.c
gcc -o main.o -g3 -Wall -c main.c
gcc -masm=intel -g3 -Wall -c main.c -S
Что я сделал не так изначально?
Разобрался сам:
вместо gcc -o0 -g3 -Wall -c main.c
нужно gcc -O0 -g3 -Wall -c main.c
перед нулем "O" большое
Спасибо!
Да, make - это очень гибкий и мощный инструмент. Например, при разработке программы под микроконтроллер туда можно поместить не только сборку бинарного файла, но и сборку документации при помощи doxygen, сборку/настройку вспомогательных скриптов и улилит, в том числе тех, что потребуются при сборке самого бинарника, возможность настройки например при помощи kconfig, загрузку файла чрез JTAG в контроллер, выполнение через JTAG тестовых сценариев для OpenOCD, выполнение статического анализа исходных текстов в части поиска потенциальных ошибок, запуск терминальной программы для взаимодействия с контроллером по UART и многое другое.
Georgy K а можно плюнуть на make и использовать современную систему сборки, да хоть тот же cmake.
Да можно, в принципе, вообще плюнуть на программирование и использовать готовый софт.
Дело в том, что у CMake, во-первых нет такой гибкости. А во-вторых, обычный make нам даст прочувствовать, как идёт процесс сборки, так сказать, увидеть его изнутри.
narod stream вы сейчас серьезно? Это как раз у мейка нет никакой гибкости, он ничего не умеет, сверх того что можно сделать шеллом. Именно поэтому появились надстройки вроде автомейка и прочей ерунды. И слава богу, что этот ад уже рядом с cvs на свалке времени. Если хотите спорить - попробуйте найти хоть один серьезный проект, который использует Makefile без autotools. Сейчас и последние-то вымирающий вид
narod stream не поймите неправильно, умение писать мейкфайлы на уровне "из десятка файлов с слепи мне вот это" - оно не лишнее ни разу, для общего развития полезно. Но не стоит боготворить make. Он глупый, косячный. Поведение по-умолчанию нелогично и тупо. Не умеет проверять синтаксис, банальная опечатка в имени переменной может выдать столько проблем, что мало не покажется, мейк же как настоящий партизан будет молчать. Проблемы с vpath всплывают, бывает очень интересно, когда вместо нужного файла целяется объектник от другого давно удаленного, в другой папке но с тем же именем. А уж про if в мейкфайлах даже вспоминать не хочется.
Понятно, что все это почти никогда не вылезет на хеллоуворлдах, но бывают не только хеллоуворлды. И сегодня никто в здравом уме не будет использовать make как систему сборки.
Для Linux, например, очень много собирается с помощью утилиты make, если не сказать, что почти всё. Я имею ввиду те пакеты, которые собираются из исходных кодов. Примеры использования make
make install
make config
make menuconfig
и т.д.
Я также целиком согласен с тем, что не надо всё писать вручную, а именно надо знать, как собираются проекты. Иначе, когда будем собирать проекты из исходных кодом и увидим ошибку например в строке с использованием необычных инструментов системы сборки make. Не смотря на всю критику, Make постоянно совершенствуется, версия уже 3.82.90. Это очень серьёзный проект, поверьте мне. Хотя дело Ваше.
Я уважаю все мнения. Никогда не навязываю своё. Если считаете, что система сборки данная ненужная, то просто пропустите данные уроки.
Спасибо за урок.
Как выглядит универсальный Makefile для сборки многофайлового проекта c с и с++?
Добрый день!
Спасибо Вам за уроки!
Можете дать какую-нибудь ссылку на инфу про команды в консоли?
Я не понимаю, например, вот такой команды : $(CC) -masm=intel -g3 -Wall -c ariph.c -S
Тоже не понятно, "ну вот, скопируем вот это вот сюда и все у нас заработает". Как оно работает? Что это за флаги или ключи? Пол часа в гугле и я смог найти описание только нескольких флагов. Все остальные поиски уходят неизвестно куда на какие то форумы, англоязычные сайты и прочее по UNIX. Если уж не хотите объяснять что они означают (желательно каждый) то дайте хоть ссылку где этому учились Вы. Та даже книга помогла бы. Но опять же: лопатить гору литературы что бы понять как работает эта хреновина порой себе дороже.
А что делать если все по инструкции сделал, а mingw32-make нету, и в установщике нету чтобы доустановить?
Какие есть альтернативы make?
Что лучше make или ninjia?
...утилита мейк не слабее самого языка Си... Супер сравнение, я поражен. Кейл это среда не только процессоров, а если быть точнее микроконтроллеров, арм... Все только разбираться и разбираться...
Придираться к словам мы умеем, это я заметил давно.
Keil работает не только с контроллерами. С контроллерами работает MDK. Есть другие версии кейл, которые работают с процессорами. Знаю не понаслышке.
Хотя...
Вам виднее.
@@narodstream552 так мы же учимся у Вас, и получается, что не понимаем чему. Хотим все ясности и понимания.
Мне кажется, потроллить мы тут больше хотим.
@@narodstream552 критику к себе надо воспринимать спокойно, а не обвинять всех налево и направо в троллинге. Мы все ученики ваши хотим учиться, чтобы все точно понимать и знать.
Я всегда спокойно воспринимаю критику и тысячу раз извинюсь, если что-то накосячил. А здесь не критика а пустой набор слов, лишенный смысловой нагрузки.
Здравствуйте. Не пойму это линковщик?
Это утилита сборки.
@@narodstream552 то есть к ней можно прикрутить линковщик и компилятор?
Как правило, всё в комплекте и ничего прикручивать не нужно.
смич