Как установить make linux

Компиляция и установка программ из исходников

Содержание

Не редко необходимые пакеты можно найти только в виде исходных текстов, в данной статье описывается метод установки пакета из исходных текстов.

Распаковка

Программы обычно распространяются в упакованных архивах, это файлы с расширениями

Нужно понимать отличие между архиватором и упаковщиком.

Программа tar умеет распаковывать, поэтому не нужно вызывать gunzip, а можно просто указать программе tar, что файл нужно cначала распаковать. Например, команда

сразу распакует и разархивирует. Отличие файлов с расширениями

лишь в том, что использовались разные упаковщики, программа tar определяет метод сжатия автоматически и дополнительных опций в данном случае не требуется.

После распаковки необходимо перейти в полученный каталог, все описываемые ниже команды выполняются в каталоге с исходными текстами пакета.

Сборка пакета

Для сборки нам нужны компиляторы: они прописаны в зависимостях пакета build-essential, так что достаточно установить его со всеми зависимостями. Ещё нужны autoconf и automake.

Итак, чтобы собрать что-то из исходников, нужно сначала собрать конфигуратор; как собрать конфигуратор, описано в файле configure.in. Для сборки конфигуратора необходимо выполнить

Если таких скриптов в архиве не оказалось, то можно выполнить последовательно следующие команды:

Все эти команды используют файл configure.in. После выполнения этих команд создастся файл configure. После этого необходимо запустить конфигуратор для проверки наличия всех зависимостей, а также установки дополнительных опций сборки (если возможно) и просмотра результата установки (опционально- может не быть)

Конфигуратор построит Makefile основываясь на полученных знаниях и файле makefile.am. Можно передать конфигуратору опции, предусмотренные в исходниках программы, которые позволяют включать/отключать те или иные возможности программы, обычно узнать о них можно командой

Также есть набор стандартных опций, вроде

, которая указывает, какой каталог использовать для установки. Для Ubuntu обычно

БЕЗ слеша в конце! Теперь можно запустить процесс сборки самой программы командой

Для сборки достаточно привелегий обычного пользователя. Окончанием сборки можно считать момент, когда команды в консоли перестанут «беспорядочно» выполняться и не будет слова error. Теперь всё скомпилировано и готово для установки.

Установка

Усилия потраченные на Правильную установку в последствии с лихвой окупятся в случае удаления или обновления устанавливаемого программного обеспечения.

Правильная установка(Вариант №1)

Установка при помощи утилиты checkinstall. Для установки выполните

Для создания и установки deb-пакета необходимо выполнить

Правильная установка(Вариант №2)

Быстрое создание deb-пакета «вручную».

Установка (вариант №3)

Процедура создания deb-пакета подробно описана в данной статье.

Неправильная установка

Для установки необходимо выполнить

Для удаления пакета, установленного данным способом необходимо выполнить в корневой директории исходников программы (там где вы запускали make install).

Ошибки

Необходимое программное обеспечение

Пакеты с буквами mm в конце описания — это пакеты для C++ программ. Список для bmpx, но подойдёт почти для любой GTK2/Gnome программы. Так что если не получается собрать, то посмотрите на этот список и сверьте с тем что у вас установлено.

Источник

Основы Make

Установить make

sudo apt install make

sudo yum install make

Так как make входит в состав build-essentials можно установить вместе с этим пакетом

sudo apt install build-essentials

Проверить версию make

GNU Make 4.2.1 Built for x86_64-pc-linux-gnu Copyright (C) 1988-2016 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.

Для чего используются Makefiles

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

Другие языки обычно имеют свои собственные инструменты, которые служат той же цели, что и Make.

Его можно использовать и за пределами программ, когда вам нужна серия инструкций для запуска в зависимости от того, какие файлы изменились.

В этой статье вы узнаете про использование компиляции C/C++.

Вот пример графика зависимостей, который вы можете построить с помощью Make.

Если какие-либо зависимости файла изменятся, то файл будет перекомпилирован:

Как установить make linux. Смотреть фото Как установить make linux. Смотреть картинку Как установить make linux. Картинка про Как установить make linux. Фото Как установить make linux

Граф зависимостей
wikipedia.org

Формат

target: prerequisites recipe

На русский обычно переводят так

цель: зависимости команды

Типичное применение: какая-то зависимость изменилась → выполнятеся действие в результате которого создаётся таргет файл.

Как и в статье Configure, make, install в примере выше используются стандартные цели (target)

.PHONY

Рассмотрим следующий Makefile

.PHONY: site site: echo «HeiHei.ru»

Если теперь выполнить

Удалите site из первой строки, а всё остальное не трогайте

Вроде бы ничего не изменилось, но теперь создайте файл site рядом с Makefile

touch site
make site

make: ‘site’ is up to date.

Для защиты от таких неприятностей и применяют PHONY

Также PHONY удобен тем, что можно перечислить все цели в самом начале файла.

Посмотреть цели Make-файла

Чтобы получить списко всех целей воспользуйтесь grep и выполните

cat GNUmakefile | grep PHONY:

Пример из C++

Functions.cpp Functions.h Main.cpp

#include #include «Functions.h» int main()

double add( double x, double y)

#pragma once double add(double x, double y);

Эта команда сначала вызывает компиляцию, затем линковку

Создайте Makefile и откройте его в текстовом редакторе. Например, в Vim

touch Makefile
vi Makefile

Makefile будет выглядеть следующим образом

Теперь для компиляции достаточно выполнить

В результате появится исполняемый файл output

В этот пример можно добавить ещё два шага: отдельно следить за компиляцией и убираться после работы.

To запустить скрипт, достаточно выполнить

Если нужно скомпилировать Main execute

Появится файл Main.o но не появятся остальные (Functions.o, output)

Functions.cpp Functions.h Main.cpp Main.o Makefile

На примере команды make Main.o можно понять почему в Make-файлах используется термин цели (target)

Если теперь выполнить make Main.o не будет перекомпилироваться. Будут выполнены только последние два шага.

Выполните make если ещё не выполняли и не делайте после этого clean

Добавим ещё одну функцию в наш проект. Нужно указать её в файлах Functions.*

Вызывать пока не будет, поэтому Main.cpp остаётся без изменений

Обратите внимание: Main.cpp не был перекомпилирован так как в нём нет изменений.

Таже посмотрите на время изменения файла output оно должно измениться.

Не вносите никаких изменений в файлы и execute

make: ‘output’ is up to date.

Перекомпиляция не нужна и поэтому не выполнена

Переменные

Подробнее про переменные в Makefile читайте в статье Работа с переменными в GNUmakefile

В этом примере вы можете увидеть как названия файлов сохранены в переменную для сокращения кода.

Запустить Docker container из Makefile

Читайте также статью

Параметризация Make

?= позволяет переменным быть перезаписанными на существующие переменные окружения

:= перезаписывает значение переменной

BUILD_ID

To добавить переменным уникальности используют BUILD_ID

USER_ID

To получить ID пользователя запустившего GNUmakefile

Какие альтернативы Make существуют

Для Java есть Ant, Maven и Gradle.

Другие языки, такие как Go и Rust, имеют свои собственные инструменты сборки.

Цель Makefile состоит в том, чтобы скомпилировать любые файлы, которые должны быть скомпилированы, основываясь на том, какие файлы изменились.

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

При запуске программы используется самая последняя версия файла.

Существует несколько общедоступных компиляторов C

В этой статье использовался gcc

-c это опция, которую разбирали здесь

whoami

В Make файле это может не получиться. Есть два варианта решить проблему

Игнорировать ошибки

Если какая-то команда выполнена с ошибкой выполнение сценария прерывается.

Если в …release/ пусто, то удалять в …master/ make уже не будет.

Вместо этого появится ошибка:

sudo rm /home/$(whoami)/rpms/release/* rm: cannot remove ‘/home/andrei/rpms/release/*’: No such file or directory make: *** [clean-repo] Error 1

rm: cannot remove ‘/home/andrei/rpms/release/*’: No such file or directory
make: [clean-repo] Error 1 (ignored)

make жалуется, но переходит ко второй команде и чистит директорию.

Источник

Configure Make Install

Перед установкой

Сначала Вам скорее всего нужно скачать архив с программой, которую Вы хотите установить.

Например, команда для скачивания python3.7:

Затем распаковать архив

И перейти в только что распакованную директорию

В этой директории скорее всего будет находиться скрипт configure

Configure

Бинари уходят в usr/bin
libraries в usr/lib
Проверяется наличие всего необходимого
Создается файл MakeFile

makefile нужны для того чтобы печатать меньше названий файлов и опций вручную.

С их помощью можно делать build только тех файлов, которые изменились.

Make это инструмент, который вызывает компиллятор. Можно указать тот компиллятор который нужен именно Вам.

С помощью инструкций в makefile можно указать какие именно файлы нужно заново компилировать.

В директории находятся три .cpp файла, два .h файла и три .o файла, оставшиеся от прошлой компиляции.

Все они нужны для проекта и не могут быть объединены в один файл.

Известно, что Example.cpp включает в себя файл Second.h и других зависимостей не имеет.

Мы хотим, чтобы при изменении самого Example.cpp либо его зависимости Second.h начиналась новая компиляция Example.cpp а затем новый Example.o линковался со старыми Second.o и Third.o

Для этого напишем Makefile aomake

Отступы нужно ставить табуляцией

Смотрим на последние две строки:

Выигрыш в этой ситуации заключается в том, что нам не нужно было перекомпилировать Second.cpp и Third.cpp мы просто перелинковали уже существующие Second.o Third.o с новым Example.o

Чтобы запустить этот файл нужно к команде make добавить опцию f и название файла

У файла Second.cpp две зависимости: Second.h и Third.h

У файла Third.cpp только одна зависимость: Third.h

Учтём эти зависимости в нашем aomake

Ещё одной полезной опцией является j

Более подробную информацию по Makefile вы можете найти в статье «makefile tutorial»

Install

Источник

Как установить make на Ubuntu

Главное меню » Ubuntu » Как установить make на Ubuntu

Как установить make linux. Смотреть фото Как установить make linux. Смотреть картинку Как установить make linux. Картинка про Как установить make linux. Фото Как установить make linux

Команда make используется для выполнения make-файла, который представляет собой уникальный файл, который включает команды оболочки, которые мы пишем для обеспечения работы проекта. Он включает в себя исполняемые цели и инструкции и не может создавать несколько файлов makefile. Лучше всего, если вы сделаете для него отдельный каталог. Он отслеживает недавно обновленные файлы, поэтому обновляйте только те, которые необходимы. В результате в этой статье будет показано, как установить пакет make в Ubuntu.

Как установить пакет Make в Ubuntu

Перед установкой пакета make лучше обновить уже установленные пакеты; в противном случае вы можете столкнуться с проблемами совместимости с некоторым программным обеспечением. Вы можете сделать это, набрав.

Эта команда предоставит вам информацию обо всех устаревших пакетах, которые можно обновить до более новой версии, поэтому это настоятельно рекомендуется перед установкой любого нового пакета. Пакет Make входит в ОС Ubuntu по умолчанию, поэтому вам следует проверить, установлен ли он уже, прежде чем рассматривать возможность его установки. Вы можете проверить это, набрав в терминале указанную ниже команду.

Если пакет make не установлен в Ubuntu по какой-либо причине, вы получите сообщение об ошибке.

Вы можете установить пакет make, набрав.

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

Если каталог доступен, вы можете использовать утилиту «make»; если он отображает ошибку, то есть способ решить и эту проблему:

Установив пакет build-essential, вы избавитесь от этой ошибки. Он также известен как мета-пакет, и вы можете использовать его для установки пакета make и нескольких других пакетов. Многие пакеты зависят и связаны с этим пакетом, и вы не можете установить их, не установив предварительно метапакет. Для его установки вам необходимо набрать в терминале следующую команду.

После его установки вы должны проверить версию make, чтобы убедиться, правильно ли она установлена. Вы также можете проверить каталог make, который вы не увидите раньше, если он работает некорректно. Вы можете проверить версию, как обсуждалось ранее, набрав команду.

И вы можете проверить каталог make, используя:

На данный момент вы можете видеть и версию, и каталог, пакет make теперь установлен правильно, и вы можете использовать его в соответствии с вашими требованиями.

Заключение

Команда make в Linux используется для компиляции и управления набором приложений и файлов из исходного кода. Это позволяет разработчикам использовать терминал для установки и сбора различных программ. Он также управляет и сокращает время, необходимое для процесса компиляции больших проектов. В этой статье мы показали вам, как вы можете установить пакет make, а также обсудили некоторые решения, если вы не можете установить этот пакет.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Источник

How do I install make?

4 Answers 4

It definitely looks like make is installed on your box. The reply you are getting is actually an error generated by make, complaining that it can’t file the Makefile (which would tell it what needs to be done)

Is there any Makefile.pl in the module you are trying to install? If so, try:

sudo apt-get update

Check the installed version:

Как установить make linux. Смотреть фото Как установить make linux. Смотреть картинку Как установить make linux. Картинка про Как установить make linux. Фото Как установить make linux

As tuxpiper says, make is already installed. What reveals this is the «No targets specified and no makefile found» message, which is produced by make itself. 1

install-module.pl is an installation script that is part of Bugzilla. There isn’t enough information in the question to be entirely certain that Bugzilla is what’s being installed—perhaps there is other software that ships with a script by that name—but the exact problem described here is one that people have had while installing Bugzilla.

The problem in this situation is that, behind the scenes, install-module.pl uses cpan (a Perl package manager) which doesn’t find and use make even though it is installed.

to enter the cpan shell, and then running the CPAN commands:

Note that the module being referred to here in the script name is a Perl module, and not any other kind of module such as a kernel module. So if you did not already have make and the other necessary development tools, installing build-essential should be sufficient to provide them, though it doesn’t substitute for configuring cpan if necessary.

This question is old and the problem may no longer be common. So I suggest that users installing Bugzilla on newer Ubuntu systems not run those cpan commands until they have actually observed the problem with make not being found even though it’s installed.

1 I’ve posted about this before, apparently. I had forgotten about that when I wrote this answer. But it turns out this answer is a bit different. For now I’ll keep this answer, which addresses the broader issues like what software this applies to, what kind of modules are being referred to, and how readers shouldn’t assume they’ll have this problem today. But I’ve made it community-wiki so other people can edit it more easily and so I don’t generate reputation from it.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *