Учитывая Ваши ответы в комментариях, проблема состоит в том, что программа "ssh-агент" не может загрузить библиотеку libfipscheck, в котором это нуждается для выполнения. Быстрое исправление должно отредактировать Ваш .xinitrc файл и прокомментировать вызов к ssh-агенту от него. Реальная фиксация должна переустановить fipscheck-lib пакета.
Ваша проблема в том, что make
не знает о ваших целях.
Вы можете запустить вышеприведенный Makefile, например, с помощью make stackoverflow.markdown
, и он сработает. Однако, только
make
не сработает, так как вы только указывали, как создавать свои цели, но не указывали, какие.
Так как leiaz point's out, вышеприведенное шаблонное правило называется неявным правилом .
SRC = $(wildcard *.html)
TAR = $(SRC:.html=.markdown)
.PHONY: all clean
all: $(TAR)
%.markdown: %.html
pandoc -o $< $@
clean:
rm -f $(TAR)
SRC
получает все исходные файлы (заканчивающиеся на .html
) с помощью шаблона Makefile wildcard
.
TAR заменяет каждый исходный файл, перечисленный в SRC
, целевым файлом, заканчивающимся на .markdown
, вместо .html
.
.PHONY перечисляет нефизические цели, которые всегда устарели и поэтому всегда выполняются - это часто все
и чистые
.
Цель все
имеет в качестве зависимостей (файлы, перечисленные справа от :
) все файлы *.markdown
. Это означает, что все эти цели выполнены.
%.markdown: %.html
pandoc -o $< $@
Этот фрагмент говорит: Каждая цель, заканчивающаяся на .markdown
, зависит от файла с тем же именем, за исключением того, что зависимость заканчивается на .html
. Символ подстановки %
должен рассматриваться как *
, как в shell'е. Однако %
с правой стороны сравнивается со спичкой с левой стороны. Source.
Обратите внимание , что последовательность пробельных символов перед pandoc
является TAB, поскольку делает
определение этого как стандарта.
Наконец, фальшивая чистая
цель изображает, как очистить вашу систему от файлов, которые вы создали с помощью этого Makefile. В этом случае он удаляет все цели (те файлы, которые были названы *.markdown
).
Шаблонные правила - это неявные правила.
У вас нет целей, определенных в вашем Makefile. Вы можете указать цель в командной строке: make something.markdown
будет использовать рецепт для создания чего-либо.уценка
из something.html
.
Или вы можете добавить в свой Makefile правило, определяющее цели по умолчанию.
all: file1.markdown file2.markdown
all: *.markdown
Когда вы запускаете только make
, , первая цель первого правила является целью по умолчанию . Необязательно называть все
.
Итак, у цели all
есть все файлы, которые вы хотите создать в качестве предварительных условий, поэтому, когда вы создадите все
, он создаст все перечисленные файлы.