Программирование на 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
  • НаукаНаука

Комментарии • 34

  • @SergV.Shishkin
    @SergV.Shishkin 4 года назад +5

    Большое спасибо! начинал смотреть в пол глаза. а потом как по накатанной, все затягивает))) думал проще бат файла ничего нет, а тут реально здорово! извините, не сдержался...спасибо за MAKE

  • @timelord1137
    @timelord1137 4 года назад +6

    Спасибо, долгожданная тема)

  • @Aleksandr_Sidorov
    @Aleksandr_Sidorov 4 года назад +2

    Наконец таки дождался этих серий , спасибо вам за труды , продолжайте в том же духе , MAKE с первого раза не зайдет , по себе знаю , тут нужна практика и побольше информации и примеров лайк однозначно , а те кто ставит дизлайки хоть что то бы прокоментировали , а то вот не зашло а почему не зашло автору не объяснили , объясните автору почему не зашло , он читает все коменты, трое не довольных а вот почему недовольны хоть бы отписались , если я чем то не доволен так я так и говорю чем , давай те все таки вместе поможем автору понять что нам не заходит он же для нас старается а не для себя

    • @narodstream552
      @narodstream552  4 года назад

      Думаю, что этим товарищам больше по душе CMD.

  • @Ivan-rc4it
    @Ivan-rc4it 4 года назад +8

    У меня почему то с таким кодом
    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" большое

  • @akkh6971
    @akkh6971 4 года назад +1

    Спасибо!

  • @georgyk8094
    @georgyk8094 4 года назад +6

    Да, make - это очень гибкий и мощный инструмент. Например, при разработке программы под микроконтроллер туда можно поместить не только сборку бинарного файла, но и сборку документации при помощи doxygen, сборку/настройку вспомогательных скриптов и улилит, в том числе тех, что потребуются при сборке самого бинарника, возможность настройки например при помощи kconfig, загрузку файла чрез JTAG в контроллер, выполнение через JTAG тестовых сценариев для OpenOCD, выполнение статического анализа исходных текстов в части поиска потенциальных ошибок, запуск терминальной программы для взаимодействия с контроллером по UART и многое другое.

    • @xbevice
      @xbevice 4 года назад

      Georgy K а можно плюнуть на make и использовать современную систему сборки, да хоть тот же cmake.

    • @narodstream552
      @narodstream552  4 года назад +1

      Да можно, в принципе, вообще плюнуть на программирование и использовать готовый софт.
      Дело в том, что у CMake, во-первых нет такой гибкости. А во-вторых, обычный make нам даст прочувствовать, как идёт процесс сборки, так сказать, увидеть его изнутри.

    • @xbevice
      @xbevice 4 года назад +1

      narod stream вы сейчас серьезно? Это как раз у мейка нет никакой гибкости, он ничего не умеет, сверх того что можно сделать шеллом. Именно поэтому появились надстройки вроде автомейка и прочей ерунды. И слава богу, что этот ад уже рядом с cvs на свалке времени. Если хотите спорить - попробуйте найти хоть один серьезный проект, который использует Makefile без autotools. Сейчас и последние-то вымирающий вид

    • @xbevice
      @xbevice 4 года назад +1

      narod stream не поймите неправильно, умение писать мейкфайлы на уровне "из десятка файлов с слепи мне вот это" - оно не лишнее ни разу, для общего развития полезно. Но не стоит боготворить make. Он глупый, косячный. Поведение по-умолчанию нелогично и тупо. Не умеет проверять синтаксис, банальная опечатка в имени переменной может выдать столько проблем, что мало не покажется, мейк же как настоящий партизан будет молчать. Проблемы с vpath всплывают, бывает очень интересно, когда вместо нужного файла целяется объектник от другого давно удаленного, в другой папке но с тем же именем. А уж про if в мейкфайлах даже вспоминать не хочется.
      Понятно, что все это почти никогда не вылезет на хеллоуворлдах, но бывают не только хеллоуворлды. И сегодня никто в здравом уме не будет использовать make как систему сборки.

    • @narodstream552
      @narodstream552  4 года назад +1

      Для Linux, например, очень много собирается с помощью утилиты make, если не сказать, что почти всё. Я имею ввиду те пакеты, которые собираются из исходных кодов. Примеры использования make
      make install
      make config
      make menuconfig
      и т.д.
      Я также целиком согласен с тем, что не надо всё писать вручную, а именно надо знать, как собираются проекты. Иначе, когда будем собирать проекты из исходных кодом и увидим ошибку например в строке с использованием необычных инструментов системы сборки make. Не смотря на всю критику, Make постоянно совершенствуется, версия уже 3.82.90. Это очень серьёзный проект, поверьте мне. Хотя дело Ваше.
      Я уважаю все мнения. Никогда не навязываю своё. Если считаете, что система сборки данная ненужная, то просто пропустите данные уроки.

  • @aabdev
    @aabdev Год назад

    Спасибо за урок.
    Как выглядит универсальный Makefile для сборки многофайлового проекта c с и с++?

  • @user-rr7tl7hf7q
    @user-rr7tl7hf7q 3 года назад +2

    Добрый день!
    Спасибо Вам за уроки!
    Можете дать какую-нибудь ссылку на инфу про команды в консоли?
    Я не понимаю, например, вот такой команды : $(CC) -masm=intel -g3 -Wall -c ariph.c -S

    • @user-co3bn2mu5d
      @user-co3bn2mu5d 3 года назад

      Тоже не понятно, "ну вот, скопируем вот это вот сюда и все у нас заработает". Как оно работает? Что это за флаги или ключи? Пол часа в гугле и я смог найти описание только нескольких флагов. Все остальные поиски уходят неизвестно куда на какие то форумы, англоязычные сайты и прочее по UNIX. Если уж не хотите объяснять что они означают (желательно каждый) то дайте хоть ссылку где этому учились Вы. Та даже книга помогла бы. Но опять же: лопатить гору литературы что бы понять как работает эта хреновина порой себе дороже.

  • @yukhnevich
    @yukhnevich Год назад

    А что делать если все по инструкции сделал, а mingw32-make нету, и в установщике нету чтобы доустановить?

  • @aabdev
    @aabdev Год назад

    Какие есть альтернативы make?

  • @aabdev
    @aabdev Год назад

    Что лучше make или ninjia?

  • @EEinside
    @EEinside 4 года назад +2

    ...утилита мейк не слабее самого языка Си... Супер сравнение, я поражен. Кейл это среда не только процессоров, а если быть точнее микроконтроллеров, арм... Все только разбираться и разбираться...

    • @narodstream552
      @narodstream552  4 года назад +1

      Придираться к словам мы умеем, это я заметил давно.
      Keil работает не только с контроллерами. С контроллерами работает MDK. Есть другие версии кейл, которые работают с процессорами. Знаю не понаслышке.
      Хотя...
      Вам виднее.

    • @EEinside
      @EEinside 4 года назад

      @@narodstream552 так мы же учимся у Вас, и получается, что не понимаем чему. Хотим все ясности и понимания.

    • @narodstream552
      @narodstream552  4 года назад

      Мне кажется, потроллить мы тут больше хотим.

    • @EEinside
      @EEinside 4 года назад +1

      @@narodstream552 критику к себе надо воспринимать спокойно, а не обвинять всех налево и направо в троллинге. Мы все ученики ваши хотим учиться, чтобы все точно понимать и знать.

    • @narodstream552
      @narodstream552  4 года назад +1

      Я всегда спокойно воспринимаю критику и тысячу раз извинюсь, если что-то накосячил. А здесь не критика а пустой набор слов, лишенный смысловой нагрузки.

  • @user-fe1et9ze2b
    @user-fe1et9ze2b 3 года назад

    Здравствуйте. Не пойму это линковщик?

    • @narodstream552
      @narodstream552  3 года назад

      Это утилита сборки.

    • @user-fe1et9ze2b
      @user-fe1et9ze2b 3 года назад

      @@narodstream552 то есть к ней можно прикрутить линковщик и компилятор?

    • @narodstream552
      @narodstream552  3 года назад

      Как правило, всё в комплекте и ничего прикручивать не нужно.

  • @user-nc3lm7im7e
    @user-nc3lm7im7e Год назад

    смич