Ошибка make no rule to make target

One of frequent mistakes might be typo in another file name.

You example is quite straightforward but what may sometimes confuse are
messages of make itself. Lets consider an example.

My folder contents is:

$ ls -1
another_file
index.md
makefile

Whereas my makefile looks like

all: index.html

%.html: %.md wrong_path_to_another_file
    @echo $@ $<

Although I do have index.md where it should be and there is no mistake in the name of it, the message from make will be

make: *** No rule to make target `index.html', needed by `all'.  Stop.

To be honest the message is confusing. It just says, that there is no rule. In fact, it means that the rule is wrong, but due to wildcard (pattern) rules make cannot determine what exactly caused the issue.

Lets alter makefile a little, which is to say replace patterns with explicit rules:

index.html: index.md wrong_path_to_another_file

And now the message we get will be:

make: *** No rule to make target `wrong_path_to_another_file', needed by `index.html'.  Stop.

Miracle! The following might be concluded:

  • Messages of make depends on rules and does not always point to the root of problems

  • There might be other problems in your makefile different from specified by this message

Now we’ve come up with the idea of checking other dependencies in a rule as well:

all: index.html

%.html: %.md another_file
    @echo $@ $<

Only this will provide us with the desired result:

$ make
index.html index.md

Время на прочтение
6 мин

Количество просмотров 13K

Методы отладки

В этой части поговорим об общих методах и проблемах отладки. В конечном итоге, отладка — это солянка из всего, что работает в данной конкретной ситуации. Эти методы работают для меня и мне приходится полагаться на них даже в случае проблем с простейшими makefile. Может быть, они помогут и тебе тоже.

Отладка Makefile /часть 1/

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

Часто наиболее простой путь увидеть значение переменной это напечатать его в ходе выполнения цели. И хотя распечатать легко можно с помощью warning, в долгой перспективе поможет сэкономить много времени немного усилий на добавление общей цели debug для вывода переменных. Вот примерный код цели debug:

debug:
       $(for v,$(V), 
         $(warning $v = $($v)))

Для того чтобы использовать её, нужно перечислить имена переменных которые надо распечатать в командной строке и собрать debug цель:

$ make V="USERNAME SHELL" debug
makefile:2: USERNAME = Owner
makefile:2: SHELL = /bin/sh.exe
make: debug is up to date.

Если уж совсем делать всё волшебно, то можно использовать MAKECMDGOALS переменную, чтобы избежать присвоения переменной V:

debug:
       $(for v,$(V) $(MAKECMDGOALS), 
         $(if $(filter debug,$v),,$(warning $v = $($v))))

Теперь можно выводить переменные просто перечислив их в командной строке. Однако, я не рекомендую этот способ, так как предупреждения make о невозможности обновлении переменных (так как они указаны как цели) могут сбить с толку:

$ make debug PATH SHELL
makefile:2: USERNAME = Owner
makefile:2: SHELL = /bin/sh.exe
make: debug is up to date.
make: *** No rule to make target USERNAME. Stop.

В то время как make выводит команды из сценариев цели до их выполнения, он не выводит команды выполняющиеся в shell функции. Часто эти команды сложные и неуловимые в том плане, что могут выполняться как незамедлительно, так и в отложенной манере, если они были вызваны в значении рекурсивной переменной. Один из способов увидеть эти команды — включить отладку в самой оболочке:

DATE := $(shell date +%F)
OUTPUT_DIR = out-$(DATE)
make-directories := $(shell [ -d $(OUTPUT_DIR) ] || mkdir -p $(OUTPUT_DIR))
all: ;

Если это запустить с опцией отладки sh, мы увидим:

$ make SHELL="sh -x"
+ date +%F
+ '[' -d out-2004-05-11 ']'
+ mkdir -p out-2004-05-11

Можно заметить, что также выводятся значения всех переменных и выражений.

Часто встречаются сильно вложенные выражения, например, для оперирования с именами файлов:

FIND_TOOL = $(firstword $(wildcard $(addsuffix /$(1).exe,$(TOOLPATH))))

Ничего хорошего в отладке таких выражений нет. Один из разумных подходов будет их разворот и печать каждого подвыражения:

$(warning $(TOOLPATH))
$(warning $(addsuffix /$(1).exe,$(TOOLPATH)))
$(warning $(wildcard $(addsuffix /$(1).exe,$(TOOLPATH))))

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

Общие сообщения об ошибках

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

Сообщение make об ошибке имеет стандартный формат:

    makefile:n: *** message. Stop

или:

    make:n: *** message. Stop.

где makefile строка — это имя файла или импортированного файла в котором произошла ошибка. Следующая часть — номер строки, в которой произошла ошибка, далее следуют три звездочки, и, наконец, само сообщение.

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

Синтаксические ошибки

Обычно это типографические ошибки: пропущенные скобки, пробелы после запятых в параметрах функции, и так далее.

Одна из наиболее частых ошибок для новых пользователей make это опускание скобок вокруг имен переменных:

foo:
     for f in $SOURCES; 
     do                 
        …               
     done

Скорее всего, make развернёт переменную $S в ничего, и оболочка выполнит цикл только раз со значением OURCES в f. В зависимости от того, что ты собрался делать с f, можно получить забавные сообщения оболочки:

    OURCES: No such file or directory

но можно и не получить сообщения вовсе. Помни — имена переменных обрамляются скобками.

missing separator

Сообщение:

    makefile:2:missing separator. Stop.

или (в GNU make — пер.):

    makefile:2:missing separator (did you mean TAB instead of 8 spaces?). Stop.

обычно означает make искал разделитель, такой как :, =, или табуляцию и не нашел ни одного. Вместо этого, он нашел что-то что он не понял.

commands commence before first target

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

unterminated variable reference

Это простая, но распространённая ошибка. Она означает, что ты забыл закрыть имя переменной или вызов функции правильным количеством скобок. С сильно вложенными вызовами функций и именами переменных make файлы становятся похожими на Lisp! Избежать этого поможет хороший редактор, который умеет сопоставлять скобки, такой как Emacs.

Ошибки в командных сценариях

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

Мы обсуждали пропущенные точки с запятыми в разделе «лучшие практики», поэтому не будем на этом останавливаться здесь.

Классическое сообщение:

    bash: foo: command not found

выводится, когда оболочка не смогла найти команду foo. Так, оболочка поискала в каждой папке из переменной PATH исполняемый файл и не нашла совпадений. Чтобы исправить такую ошибку, нужно обновить PATH переменную, обычно в .profile (Bourne shell), .bashrc (bash) или .cshrc (C shell). Конечно, можно также установить PATH в самом makefile, и экспортировать PATH из make.

Если же команда завершилась с ошибкой, она выходит с ненулевым статусом выхода. В этом случае, make отчитается об ошибке со следующим сообщением:

$ make
touch /foo/bar
touch: creating /foo/bar: No such file or directory
make: *** [all] Error 1

Здесь touch команда не сработала, что напечатало своё собственное сообщение объясняющее сбой. Следующая строка — это итоговая ошибка make. Упавшая цель в makefile указана в квадратных скобках, а затем статус выхода упавшей программы. Если программа вышла по сигналу, а не с ненулевым статусом выхода, то make напечатает более подробное сообщение.

Заметим также, что команды под знаком @ также могут упасть. В этом случае сообщение об ошибке может возникнуть как будто оно из ниоткуда.

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

No Rule to Make Target

Это сообщение имеет две формы:

    make: *** No rule to make target XXX. Stop.

и:

    make: *** No rule to make target XXX, needed by YYY. Stop.

Это означает, что make решил обновить файл XXX, но make не смог найти ни одного правила для выполнения работы. make ищет во всех явных и неявных правилах в его базе данных прежде чем сдаться и вывести это сообщение.

Есть три причины для этой ошибки:

  • В твоем makefile отсутствует необходимое правило для обновления файла. В этом случае тебе необходимо добавить правило с описанием как построить цель.
  • В makefile — опечатка. Или make ищет неверный файл или в правиле построения этого файла указан неверный файл. Если в makefile используются переменные, то опечатки становится еще труднее отыскать. Иногда единственный путь быть точно уверенным в значении сложного имени файла это напечатать его или печатая переменную напрямую или исследуя внутреннюю базу данных make.
  • Файл должен быть, но make не находит его или из-за того, что его нет, или make не знает где его искать. Конечно, иногда make абсолютно прав. Файла нет — похоже мы забыли его скачать из VCS. Еще чаще, make не может найти файл из-за того, что исходник расположен где-то еще. Иногда исходник в другом дереве исходников, или может файл генерируется другой программой и создался в папке артефактов сборки.

    Overriding Commands for Target

    make позволяет только один командный сценарий для цели (за исключением «::» правил, которые редко используются). Если встретится больше чем один командный сценарий для одной цели, make выведет предупреждение:

    makefile:5: warning: overriding commands for target foo

    Также он может вывести сообщение:

    makefile:2: warning: ignoring old commands for target foo

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

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

Например, мы могли бы определить общную цель во включаемом файле:

# Create a jar file.
$(jar_file):
        $(JAR) $(JARFLAGS) -f $@ $^

и позволим нескольким отдельным makefile добавить свои собственные требования. Мы могли бы записать в makefile:

# Set the target for creating the jar and add prerequisites
jar_file = parser.jar
$(jar_file): $(class_files)

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

Содержание

No rule to make target
GNUmakefile:1: *** missing separator. Stop.
Syntax error : end of file unexpected (expecting «fi»)
OLDPWD not set
@echo: command not found
-bash: make: command not found
Похожие статьи

No rule to make target

make: *** No rule to make target ‘main.cpp’, needed by ‘main.o’. Stop.

GNUmakefile:1: *** missing separator. Stop.

Если вы видите ошибку

GNUmakefile:1: *** missing separator. Stop.

Обратите внимание на GNUmakefile:1:

1 — это номер строки, в которой произошла ошибка

Возможно где-то вместо табуляции затесался пробел. Напоминаю, что в makefile отступы должны быть заданы табуляциями.

Либо таргет перечислен без двоеточия .PHONY clean вместо .PHONY: clean

Либо какая-то похожая ошибка.

Syntax error : end of file unexpected (expecting «fi»)

Если вы видите ошибку

Syntax error : end of file unexpected (expecting «fi»)

Обратите внимание на расстановку ; в конце выражений и расстановку при переносе строк.

Изучите этот

пример

и сравните со своим кодом.

OLDPWD not set

Если внутри makefile вы выполняете cd и видите ошибку

OLDPWD not set

Попробуйте сперва явно перейти в текущую директорию с помощью

CURDIR

cd $(CURDIR)

@echo: command not found

Если внутри makefile вы пытаетесь подавить вывод echo и получаете

@echo: command not found

Скорее всего echo это не первая команда в строке

НЕПРАВИЛЬНО:

if [ ! -f /home/andrei/Downloads/iso/centos_netinstall.iso ]; then
rm ./CentOS-7-x86_64-NetInstall-*;
wget -r -np «http://builder.hel.fi.ssh.com/privx-builds/latest/PrivX-master/Deliverables/» -A «CentOS-7-x86_64-NetInstall-2009.iso

-*.iso;
else
@echo «WARNING: centos_netinstall.iso already exists»;

ПРАВИЛЬНО:

@if [ ! -f /home/andrei/Downloads/iso/centos_netinstall.iso ]; then
rm ./CentOS-7-x86_64-NetInstall-*;
wget -r -np «http://builder.hel.fi.ssh.com/privx-builds/latest/PrivX-master/Deliverables/» -A «CentOS-7-x86_64-NetInstall-2009.iso

-*.iso;
else
echo «WARNING: centos_netinstall.iso already exists»;

-bash: make: command not found

Ошибка

-bash: make: command not found

Означает, что make не установлен.

Установить make в rpm системах можно с помощью yum в deb система — с помощью apt

sudo yum -y install make

sudo apt -y install make

Похожие статьи

make
Основы make
PHONY
CURDIR
shell
wget + make
Переменные в Make файлах
ifeq: Условные операторы
filter
-c: Компиляция
Linux
Bash
C
C++
C++ Header файлы
Configure make install
DevOps
Docker
OpenBSD
Errors make

The no rule to make target cmake bug nearly always affects scripts and documents without an adequate vertex file or command. In addition, developers and programmers must ensure they are in the correct directory when creating the file to avoid the no rule to make target cs50 invalid code snippet that halts all operations.no rule to make target

This comprehensive guide answers the hot network questions tagged by beginners and less skillful developers, provides the syntaxes that replicate the bug, and lists the possible solution principles.

So, you are at the best place if you want to learn how to obliterate the no rule to make target so errors from your document without any complications or obstacles.

Contents

  • Why No Rule To Make Target Exists? Explaining the Possible Causes
    • – Using GCC Linux With Make File
    • – The File Is Not in the Current Directory
    • – Building a Template Project on MPLABX
  • No Rule To Make Target: Presenting The Ultimate Solution
    • – Fixing the Backlash in the Multi-line Rule
  • Conclusion

Why No Rule To Make Target Exists? Explaining the Possible Causes

The no rule to make target Ubuntu error is caused when programmers have a document or a script without a fair vertex file or command. Unfortunately, users may also experience the no rule to make target o exceptions when the functions, values, or powers have several spelling errors and inconsistencies.

Furthermore, our experts confirmed an identical code snippet exception when their build configurations lack proper directories or values. For instance, the system may display the annoying no rule to make target in C bug when the project location or workspace location is wrong, although users wrote most of the code successfully.

In this case, developers must create another workspace in the uppermost directory to repair the no rule to make target all. Again, readers must learn more about the possible culprits and incorrect syntaxes before discovering plausible solutions.

In addition, this error can affect your programming experience when your project misses or has a corrupted primary makefile. Still, this instance is different from typical, and only a few developers have encountered it, but knowing it exists is critical.

In addition, readers must be aware this guide discusses the no rule to make target vs code differences because they are irrelevant when learning how to debug your document. So, let us begin exemplifying the possible culprits for this aggravating mistake that affects short and complex programs or applications.

– Using GCC Linux With Make File

The first instance we exemplify in this guide attempt to use a make file to compile the project on GCC Linux. The script includes several elements and commands that introduce the primary and secondary operations, but the program faces an entirely incorrect code snippet.

However, we will only show you the complete project with some documents and files because our experts would like to focus on the make file. But first, let us learn about the exception that stops the processes and blocks your project.

Readers can discover the entire message in this example:

“No rule to make target ‘vertex.cpp’, needed by ‘vertex.oo’. Stop.”

This snippet confirms the script has issues with the vertex file, so it launches a stop. Still, debugging the mistake is easy, as you will soon learn. We will now provide the make file syntax that provokes this bug due to the lack of correct vertex files.

The following code uses the make file in GCC Linux:

a.out: vertex.o edge.o elist.o main.o vlist.o enode.o vnode.o

g++ vertex.o edge.o elist.o main.o vlist.o enode.o vnode.o

main.o: main.cpp main.h

g++ -c main.cpp

vertex.o: vertex.cpp vertex.h

g++ -c vertex.cpp

edge.o: edge.cpp edge.h

g++ -c num.cpp

vlist.o: vlist.cpp vlist.h

g++ -c vlist.cpp

elist.o: elist.cpp elist.h

g++ -c elist.cpp

vnode.o: vnode.cpp vnode.h

g++ -c vnode.cpp

enode.o: enode.cpp enode.h

g++ -c node.cpp

Although looking at the directory listing of this file is beneficial, it is irrelevant when applying the debugging solutions discussed later.

– The File Is Not in the Current Directory

As the previous chapter explained, the lack of adequate make files is one of the most common causes of this error. However, unlike that example where the vertex file did not exist, this script confuses the command because the file is not in the current directory.No Rule To Make Target Causes

In addition, programmers wrote this syntax on Linux, so several properties and elements might overlap. This time, however, we will provide the running command for the operation.

This script provides the make file commands:

CC = gcc

OBJS = main.o mapp.o extended_map.o elections.o utilities.o

EXEC = election

DEBUG_FLAG = -DNDEBUG

COMP_FLAG = -std=c99 -Wall -pedantic-errors -Werror

$(EXEC) : $(OBJS)

$(CC) $(DEBUG_FLAGS) $(OBJS) -o $@

main.o: main.c map.h elections.h test_utilities.h

$(CC) -c $(DEBUG_FLAGS) $(COMP_FLAGS) $*.c

map.o: map.c map.h utilities.h

$(CC) -c $(DEBUG_FLAGS) $(COMP_FLAGS) $*.c

extended_map.o: extended_mapp.c extended_map.h map.h utilities.h

$(CC) -c $(DEBUG_FLAGS) $(COMP_FLAGS) $*.c

election.o: elections.c elections.h map.h extended_map.h utilities.h

$(CC) -c $(DEBUG_FLAGS) $(COMP_FLAGS) $*.c

utilities.o: utilities.c utilities.h

$(CC) -c $(DEBUG_FLAGS) $(COMP_FLAGS) $*.c

clean:

rm -f $(OBJS) $(EXEC)

This code snippet confirms the map file exists in a different folder than the primary directory. Henceforth, the system has nothing to catch on to, displaying the error that halts further operations.

Still, readers must learn more about the running command shown below:

-bash-4.1$ ls

elections.c extended_map.c main.c

makefile mtm_map utilities.c

elections.h extended_mapp.h main.o

map.h test_utilities.h utilities.hh

-bash-4.1$ make

make: *** No rule to make target `map.c’, needed by `map.o’. Stop.

-bash-4.1$

As you can tell, the exception snippet is nearly identical because it stops a specific file.

– Building a Template Project on MPLABX

A few programmers reported an identical invalid syntax when building a template project on MPLABX, either in new or old versions. The user attempts to call out the project in the XC16 compiler guide, but the entire build fails, and the system launches this message.

This is especially typical for new users that install the MPLABX software and the adequate compiler suite without playing around with the values and settings. As a result, one of the C source files confuses your system and prevents developers from finishing their projects.

The following sequence captures the commands and processes:

make -f nbproject/ Makefile-default.mk SUBPROJECTS= .build-conf

make[1]: Entering directory `C:/ Users/ Noah/ MPLABXProjects/ first_xc16_project.X’

make -f nbproject/ Makefile-default.mk dist/ default/ production/ first_xc16_project.X.production.hex

make[2]: Entering directory `C:/ Users/ Noah/ MPLABXProjects/ first_xc16_project.X’

make[2]: Leaving directory `C:/ Users/ Noah/ MPLABXProjects/ first_xc16_project.X’

make[2]: *** No rule to make target `../../../../Program Files (x86)/ Microchip/ xc16/ v1.20/ support/ templates/ c/ traps.c’, needed by `build/ default/ production/ _ext/ 908808360/ traps.o’. Stop.

make[1]: Leaving directory `C:/ Users/ Noah/ MPLABXProjects/ first_xc16_project.X’

make[1]: *** [.build-conf] Error 2

make: *** [.build-impl] Error 2

BUILD FAILED (exit value 2, total time: 300ms)

In theory, this mistake should not affect your project in MPLABX because the C file is full-proof and is not case-sensitive. But, unfortunately, the special cases and characters in Windows 7 64-bit folder names can launch several inconsistencies.

Ultimately, the bug happens because the compiler version does not match the original one. So, let us now begin solving this mistake that obliterates your user experience.

No Rule To Make Target: Presenting The Ultimate Solution

You can debug the no rule to make target by double-checking your code for any obvious mistakes in the make file that might confuse your system or application. Moreover, the ultimate solution to this error is fixing the backlash in multi-line rule.



For instance, the messages inside the files sometimes need to be clarified, especially in projects with many commands, processes, and operations. Luckily, this guide takes you on a step-by-step journey to clear your script.

Let us first learn about the folder contents:

$ ls -1

another_file

index.md

makefile

Everything looks ordinary and functional here so we will discover the make file and its properties in the following example:

all: index.html

%.html: %.md wrong_path_to_another_file

@echo $@ $<

Unfortunately, this example is not functional because the dependencies are invalid. In addition, although developers might try to change the patterns with explicit rules, the error will persist. Luckily, developers can follow our code to check the directories and fix any typos in the script.

The following example checks other dependencies and rules:

all: index.html

%.html: %.md another_file

@echo $@ $<

For instance, the make file messages depend on the rules and only sometimes point to the problem’s root. As a result, programmers must think outside the box and fix the locations and typos in different files.

Consequently, this clears your script and outputs the following result:

$ make

index.html index.md

This snippet completes the primary solution for this bug. Fortunately, this guide includes other possible solutions and fixes that repair the backlash in the multi-line rule.

– Fixing the Backlash in the Multi-line Rule

Although the solution is sometimes as straightforward as checking if the specified file exists, readers must learn alternative approaches in case something else is needed. In addition, developers can confirm they are in the correct directory, which only takes a few seconds.Fixing the Backlash in the Multi line Rule

However, this chapter fixes the backlash in multi-line rules and adds the right symbols to the source libraries. These solutions are full-proof and will not affect other commands and processes in your script.

First, we will provide the source library with invalid commands:

LIBRARYDIRS = src/Library

LIBRARYDIRS = src/TheOtherLibrary

This example is incorrect due to a single symbol before the source. Instead, developers must repeat the following script:

LIBRARYDIRS = src/Library

LIBRARYDIRS += src/TheOtherLibrary

The plus symbol in this syntax is vital when debugging your code because it establishes the purpose. In addition, users can change the multi-line rules in the make file.

The following example provides the invalid values:

BJS-$(CONFIG_OBJ1) += file1.o file2.o

file3.o file4.o

OBJS-$(CONFIG_OBJ2) += file5.o

OBJS-$(CONFIG_OBJ3) += file6.o

The backlash at the end of the configuration in the file list causes this bug. So, deleting it removes the error without further complications, as shown here:

OBJS-$(CONFIG_OBJ1) += file1.o file2.o

file3.o file4.o

OBJS-$(CONFIG_OBJ2) += file5.o

As you can tell, a few single code changes can replenish your code and enable all commands and functions. This example also confirms symbols are critical when programming and programmers must never misplace them.

Conclusion

The no rule to make target bug nearly always affects scripts and documents without an adequate vertex file or command, but it can happen due to a lack of correct symbols. So, the following bullet list will help you remember the vital points covered in our in-depth guide:

  • This bug affects all operating systems and programs, although it is most common in Linux
  • The error has several common culprits exemplified in this guide’s introductory chapters
  • Programmers and developers must always double-check the script for typos or incorrect directories
  • The alternative solutions are full-proof and easy to replicate, although each syntax is unique
  • Removing the invalid code snippet allows developers to complete the project

Experiencing bugs and errors is typical when programming and should not put off beginners or developers who are just starting their programming journey. Hopefully, this guide helped you overcome the rule target error from your script.

  • Author
  • Recent Posts

Position is Everything

Your Go-To Resource for Learn & Build: CSS,JavaScript,HTML,PHP,C++ and MYSQL. Meet The Team

Position is Everything

I am doing an install of git on Ubuntu 20.04, according to this tutorial. I executed from «Install Git on Linux«, the Debian/Ubuntu parts. And then I get the errors:

make: *** No rule to make target 'all'.  Stop.
make: *** No rule to make target 'install'.  Stop.

at point 3 under «Build Git from source on Linux«. I am new to Linux, but it seems as though make is automatically installed. When I run:

apt list --installed

it is listed:

make/focal,now 4.2.1-1.2 amd64 [installed,automatic]

Can you help on how to take this forward or approach learning about the problem?

BeastOfCaerbannog's user avatar

asked Jul 4, 2021 at 16:23

Allstar's user avatar

1

There are multiple ways to install software in Ubuntu. You can install software using APT, Snap, Flatpak, AppImage, installing from source, etc.

As far as what I can understand, you are trying to install git from source.

I would personally not suggest new Ubuntu/Linux users to install software from source as it is a bit complex than compared to other methods.

In the article which you have mentioned, following these steps will install git using APT:

Debian / Ubuntu (apt-get)

Git packages are available via apt:

  1. From your shell, install Git using apt-get:
    $ sudo apt-get update
    
    $ sudo apt-get install git
    
  2. Verify the installation was successful by typing
    git --version:

    $ git --version
    
    git version 2.9.2
    
  3. Configure your Git username and email using the following commands, replacing Emma’s name with your own. These details will be associated with any commits that you create:
    $ git config --global user.name "Emma Paris"
    
    $ git config --global user.email "eparis@atlassian.com"
    

To know more about installing software in Ubuntu, read these:

  • https://medium.com/geekculture/5-different-ways-to-install-software-on-ubuntu-linux-14ae6b95d1d2
  • How do I install a .tar.gz (or .tar.bz2) file? (I suggest you research a bit about checkinstall.)

answered Jul 4, 2021 at 17:36

Random Person's user avatar

Random PersonRandom Person

1,4721 gold badge12 silver badges31 bronze badges

Понравилась статья? Поделить с друзьями:
  • Ошибка mains ccw rot
  • Ошибка luaide dll
  • Ошибка main must return int
  • Ошибка lua51 dll
  • Ошибка main bios checksum error