Я собираю kaldi на Arch Linux, начиная с этапа сборки в директории tools, а затем пытаюсь собрать в директории src. Установлены lapack, openfst и, кажется, все остальные зависимости. При выполнении команды `make test` в директории src возникает следующая ошибка: ``` make[1]: вход в каталог «/home/sakair/programming/kaldi/src/matrix» c++ -std=c++17 -I.. -isystem /home/sakair/programming/kaldi/tools/openfst-1.8.4/include -O1 -Wall -Wno-sign-compare -Wno-unused-local-typedefs -Wno-deprecated-declarations -Winit-self -DOPENFST_VER=10804 -DKALDI_DOUBLEPRECISION=0 -DHAVE_EXECINFO_H=1 -DHAVE_CXXABI_H -DHAVE_OPENBLAS -I/usr/include -msse -msse2 -g -pthread -c -o kaldi-matrix.o kaldi-matrix.cc In file included from ../matrix/jama-svd.h:34, from kaldi-matrix.cc:27: ../matrix/cblas-wrappers.h: In function «void kaldi::clapack_Xtptri(KaldiBlasInt*, float*, KaldiBlasInt*)»: ../matrix/cblas-wrappers.h:386:10: ошибка: слишком мало аргументов для функции «void stptri_(const char*, const char*, const int32_t*, float*, int32_t*, size_t, size_t)» 386 | stptri_(const_cast<char *>("U"), const_cast<char *>("N"), num_rows, Mdata, result); | ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from /usr/include/lapack.h:11, from /usr/include/lapacke.h:36, from ../matrix/kaldi-blas.h:100, from ../matrix/cblas-wrappers.h:29: /usr/include/lapack.h:21355:6: замечание: объявлено здесь 21355 | void LAPACK_stptri_base( | ^~~~~~~~~~~~~~~~~~ ../matrix/cblas-wrappers.h: In function «void kaldi::clapack_Xtptri(KaldiBlasInt*, double*, KaldiBlasInt*)»: ../matrix/cblas-wrappers.h:389:10: ошибк ``` Какова причина этой ошибки и что мне следует предпринять для ее устранения?
Ошибка, которую вы видите, связана с несовместимостью между Kaldi и используемой вами библиотекой LAPACK (или LAPACKE). В вашем случае ошибка указывает на то, что вызывается функция `stptri_`, которая ожидает больше аргументов, чем передается. Это может означать, что Kaldi использует устаревшие объявления функций, которые не соответствуют текущей версии LAPACK, установленной у вас. Вот несколько возможных причин и решений для этой проблемы: 1. **Версия LAPACK**: Убедитесь, что установленная у вас версия LAPACK совместима с Kaldi. Иногда Kaldi ожидает определенные версии LAPACK, и обновление вашей библиотеки до последней версии может вызвать подобные ошибки. Попробуйте установить более раннюю версию LAPACK, которая удостоверяет работоспособность Kaldi. 2. **Проблемы с CMake или Makefile**: Если вы используете систему сборки, убедитесь, что Kaldi правильно находит и подключает LAPACK. Иногда нужно вручную задать пути к библиотекам в файле конфигурации, особенно если вы использовали нестандартные директории для установки зависимостей. 3. **Обновление Kaldi**: Проверьте репозиторий Kaldi на наличие обновлений или патчей, которые могут исправлять эту ошибку. Иногда другие пользователи уже сталкивались с этой же проблемой, и в выходных данных вашей версии Kaldi могут быть предложены исправления. 4. **Использование OpenBLAS**: В некоторых случаях работа с OpenBLAS вместо LAPACK может привести к лучшим результатам. Попробуйте установить OpenBLAS и настраивать Kaldi для использования этой библиотеки. 5. **Удаление объектов и повторная сборка**: Попробуйте выполнить команду `make clean` в каталоге `src`, а затем снова запустите сборку. Иногда предыдущие неудачные сборки могут оставить за собой артефакты, из-за которых последующие сборки будут завершаться с ошибками. 6. **Проверка зависимостей**: Убедитесь, что все зависимости Kaldi установлены и правильно распознаны. В Arch Linux команда `pacman` поможет проверить установленные пакеты. Также убедитесь, что все необходимые опции соответствуют вашему окружению (например, использование многопоточности и т.д.). Если ни одно из этих решений не помогает, можно поискать обсуждения на форуме Kaldi или обратиться к сообществу для получения помощи от других пользователей, которые могли бы столкнуться с аналогичной проблемой.
Вот вывод ошибки make test в директории src
1) зачем запускатьmake test
в каталоге src, когда у проекта есть система сборки основанная на CMake и можно запускатьmake test
в каталоге где выполняется сборка?
2) на ubuntu 22.04.5 c liblapack-3.10.0 сборка завершается успешно иmake test
в каталоге сборки тоже завершается успешно:100% tests passed, 0 tests failed out of 132