Ошибка компиляции HTK: make[1]: ничего не нужно делать для «всех»

Следуя официальному руководству по установке HTK Unix/Linux, я проблемы, аналогичные описанным в этот поток при попытке запустить make all на HTK. Сначала я смотрел не на тот Makefile (/htk-3.4.1/Makefile), как предложил MadScientist. После исправления дополнительного отступа в строке 77 в правильном Makefile (/htk-3.4.1/HLMTools/Makefile), созданном при запуске ./configure --prefix=/tmp, ошибка компиляции HTK:

Makefile:77: *** missing separator (did you mean TAB instead of 8 spaces?). Stop.

исчез, но я все еще не могу скомпилировать на make all:

$ make all
(cd HTKTools && make all) \
  || case "" in *k*) fail=yes;; *) exit 1;; esac;
make[1]: Entering directory '/home/zeesy/htk-3.4.1/HTKTools'
make[1]: Nothing to be done for 'all'.
make[1]: Leaving directory '/home/zeesy/htk-3.4.1/HTKTools'
(cd HLMTools && make all) \
  || case "" in *k*) fail=yes;; *) exit 1;; esac;
make[1]: Entering directory '/home/zeesy/htk-3.4.1/HLMTools'
make[1]: Nothing to be done for 'all'.
make[1]: Leaving directory '/home/zeesy/htk-3.4.1/HLMTools'

До make all запуск ./configure --prefix=/tmp приводил к ошибке:

config.status: WARNING:  HLMTools/Makefile.in seems to ignore the --datarootdir setting

для HTKLib, HLMLib, HTKTools и HLMTools. Он также сбрасывает строку 77 файла Makefile, чтобы вкладки с четырехкратным отступом.

У меня установлено gcc-multilib. На основе это сообщение, я установил libc6:i386 zlib1g:i386 lib32ncurses5 и lib32z1 для запуска этой 32-битной программы на 64-битном компьютере.

Кто-нибудь сталкивался с этой проблемой? Шаг 4 руководства по установке VoxForge HTK предполагает, что требуются модули совместимости компилятора gcc 3.4.


person Zeesy    schedule 21.08.2019    source источник
comment
Проблема, вероятно, близка, но на самом деле не на, строке 77. Не могли бы вы расширить цитату Makefile, включив в нее строки с 65 по 90, с отмеченной строкой 77?   -  person zwol    schedule 21.08.2019
comment
Пожалуйста, помните, что вам нужно смотреть на /home/zeesy/htk-3.4.1/HLMTools/Makefile, а не на какой-то другой make-файл.   -  person MadScientist    schedule 22.08.2019
comment
Вы случайно не пользуетесь софт табами?   -  person user58697    schedule 22.08.2019
comment
Просто взглянув на ваш интервал, я вижу, что рецепт для mkinstalldir находится дальше других рецептов. Так что я думаю, вам нужно посмотреть, какие там символы. Я бы удалил каждый отступ и изменил их отступ, гарантируя, что используется символ табуляции (ваш редактор может заставлять пробелы, поскольку пользователь58697 ускользает). Но наверняка один из них неправильный - иначе все они были бы с одинаковыми отступами. Вы можете проверить, что это вкладки, но с помощью клавиш со стрелками для перемещения по этому пробелу (вкладка должна быть шириной в один символ). Также убедитесь, что нет пробелов EOL.   -  person code_fodder    schedule 22.08.2019
comment
... или даже просто закомментируйте строку, начинающуюся с if [ ! -d ..., поставив # в самом начале строки, и посмотрите, исчезнет ли ошибка - это будет самая быстрая проверка   -  person code_fodder    schedule 22.08.2019
comment
Многие редакторы и некоторые IDE могут отображать пробельные символы по выбору. Используйте это, чтобы убедиться в наличии вкладок. Make нуждается в табуляции в качестве первого символа в строке, чтобы распознать ее как командную строку. Это нормально, если следуют пробелы, но табуляция обязательна.   -  person the busybee    schedule 22.08.2019
comment
Спасибо за предложения @code_fodder Я исправил (автоматически сгенерированные) четверные вкладки, и Makefile не выдает ошибок. Однако HTK по-прежнему не компилируется. Если вам интересно, см. измененный вопрос выше.   -  person Zeesy    schedule 22.08.2019


Ответы (1)


Как предположил MadScientist, сначала я смотрел не на тот Makefile. Я смотрел на /htk-3.1.4/Makefile, когда файл, который нужно было отредактировать, был /htk-3.1.4/HLMTools/Makefile. Случай невнимательного прочтения сообщений об ошибках.

После получения того же сообщения об ошибке для строки 77

missing separator (did you mean TAB instead of 8 spaces?).

Я запустил Spaces to Tabs в Atom и исправил четверную вкладку в Makefile по умолчанию.

Сначала команда make all выполнялась успешно, но, поскольку мне не удалось получить доступ к ls /tmp/bin.linux, я снова попытался выполнить make all и получил второе сообщение об ошибке.

make[1]: Nothing to be done for 'all'

Исправление для этого заключалось в запуске make clean (см. этот пост). Однако Николай Шмырев указал, что эта ошибка означает, что все скомпилировалось, а там "ничего не поделаешь".

Сейчас у меня проблемы с доступом к /tmp/bin.linux, но я займусь этим в другом месте.

РЕЗЮМЕ: ошибка make[1]: Nothing to be done for 'all' означает, что все уже скомпилировано.

person Zeesy    schedule 21.08.2019
comment
Если вы видите Ничего не делать для «всех», нет необходимости запускать make clean и make снова, у вас уже все скомпилировано. Вы просто переходите к другим шагам - person Nikolay Shmyrev; 24.08.2019
comment
Спасибо. Поработав еще немного с Юлиусом, я понял, что хоть все и скомпилировалось, но скомпилировалось неправильно из-за какой-то другой ошибки. Я разместил сообщение на форумы HTK, но пока нет ответа. - person Zeesy; 26.08.2019
comment
Вам нужно запустить make install, чтобы установить его в папку /tmp/bin.linux, как вы настроили. Форум для Voxforge, а не для HTK. Я слишком ленив, чтобы ответить вам там, хотя. - person Nikolay Shmyrev; 27.08.2019
comment
Я снова запускал ./configure --prefix=/tmp, make all и make install из каталога voxforge/bin/htk, но все еще получаю ls: cannot access '/tmp/bin.linux': No such file or directory при запуске ls /tmp/bin.linux. /tmp не отображается в ls, но его содержимое (включая bin.linux) отображается в ls /tmp. - person Zeesy; 27.08.2019
comment
Вы должны прочитать (и, если вы хотите помочь, поделиться) полный и точный вывод команд. Все ошибки есть, нужно только их прочитать. - person Nikolay Shmyrev; 27.08.2019