Задать вопрос
@SZX80

Почему не собирается kaldi?

Я собираю 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: ошибка: слишком мало аргументов для функции «void dtptri_(const char*, const char*, const int32_t*, double*, int32_t*, size_t, size_t)»
  389 |   dtptri_(const_cast<char *>("U"), const_cast<char *>("N"), num_rows, Mdata, result);
      |   ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/lapack.h:21339:6: замечание: объявлено здесь
21339 | void LAPACK_dtptri_base(
      |      ^~~~~~~~~~~~~~~~~~
../matrix/cblas-wrappers.h: In function «void kaldi::clapack_Xgesvd(char*, char*, KaldiBlasInt*, KaldiBlasInt*, float*, KaldiBlasInt*, float*, float*, KaldiBlasInt*, float*, KaldiBlasInt*, float*, KaldiBlasInt*, KaldiBlasInt*)»:
../matrix/cblas-wrappers.h:420:10: ошибка: слишком мало аргументов для функции «void sgesvd_(const char*, const char*, const int32_t*, const int32_t*, float*, const int32_t*, float*, float*, const int32_t*, float*, const int32_t*, float*, const int32_t*, int32_t*, size_t, size_t)»
  420 |   sgesvd_(v, u,
      |   ~~~~~~~^~~~~~
  421 |           num_cols, num_rows, Mdata, stride,
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  422 |           sv, Vdata, vstride, Udata, ustride,
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  423 |           p_work, l_work, result);
      |           ~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/lapack.h:3640:6: замечание: объявлено здесь
 3640 | void LAPACK_sgesvd_base(
      |      ^~~~~~~~~~~~~~~~~~
../matrix/cblas-wrappers.h: In function «void kaldi::clapack_Xgesvd(char*, char*, KaldiBlasInt*, KaldiBlasInt*, double*, KaldiBlasInt*, double*, double*, KaldiBlasInt*, double*, KaldiBlasInt*, double*, KaldiBlasInt*, KaldiBlasInt*)»:
../matrix/cblas-wrappers.h:430:10: ошибка: слишком мало аргументов для функции «void dgesvd_(const char*, const char*, const int32_t*, const int32_t*, double*, const int32_t*, double*, double*, const int32_t*, double*, const int32_t*, double*, const int32_t*, int32_t*, size_t, size_t)»
  430 |   dgesvd_(v, u,
      |   ~~~~~~~^~~~~~
  431 |           num_cols, num_rows, Mdata, stride,
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  432 |           sv, Vdata, vstride, Udata, ustride,
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  433 |           p_work, l_work, result);
      |           ~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/lapack.h:3620:6: замечание: объявлено здесь
 3620 | void LAPACK_dgesvd_base(
      |      ^~~~~~~~~~~~~~~~~~
../matrix/cblas-wrappers.h: In function «void kaldi::clapack_Xsptri(KaldiBlasInt*, float*, KaldiBlasInt*, float*, KaldiBlasInt*)»:
../matrix/cblas-wrappers.h:438:10: ошибка: слишком мало аргументов для функции «void ssptri_(const char*, const int32_t*, float*, const int32_t*, float*, int32_t*, size_t)»
  438 |   ssptri_(const_cast<char *>("U"), num_rows, Mdata, ipiv, work, result);
      |   ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/lapack.h:16233:6: замечание: объявлено здесь
16233 | void LAPACK_ssptri_base(
      |      ^~~~~~~~~~~~~~~~~~
../matrix/cblas-wrappers.h: In function «void kaldi::clapack_Xsptri(KaldiBlasInt*, double*, KaldiBlasInt*, double*, KaldiBlasInt*)»:
../matrix/cblas-wrappers.h:442:10: ошибка: слишком мало аргументов для функции «void dsptri_(const char*, const int32_t*, double*, const int32_t*, double*, int32_t*, size_t)»
  442 |   dsptri_(const_cast<char *>("U"), num_rows, Mdata, ipiv, work, result);
      |   ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/lapack.h:16216:6: замечание: объявлено здесь
16216 | void LAPACK_dsptri_base(
      |      ^~~~~~~~~~~~~~~~~~
../matrix/cblas-wrappers.h: In function «void kaldi::clapack_Xsptrf(KaldiBlasInt*, float*, KaldiBlasInt*, KaldiBlasInt*)»:
../matrix/cblas-wrappers.h:447:10: ошибка: слишком мало аргументов для функции «void ssptrf_(const char*, const int32_t*, float*, int32_t*, int32_t*, size_t)»
  447 |   ssptrf_(const_cast<char *>("U"), num_rows, Mdata, ipiv, result);
      |   ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/lapack.h:16167:6: замечание: объявлено здесь
16167 | void LAPACK_ssptrf_base(
      |      ^~~~~~~~~~~~~~~~~~
../matrix/cblas-wrappers.h: In function «void kaldi::clapack_Xsptrf(KaldiBlasInt*, double*, KaldiBlasInt*, KaldiBlasInt*)»:
../matrix/cblas-wrappers.h:451:10: ошибка: слишком мало аргументов для функции «void dsptrf_(const char*, const int32_t*, double*, int32_t*, int32_t*, size_t)»
  451 |   dsptrf_(const_cast<char *>("U"), num_rows, Mdata, ipiv, result);
      |   ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/lapack.h:16151:6: замечание: объявлено здесь
16151 | void LAPACK_dsptrf_base(
      |      ^~~~~~~~~~~~~~~~~~
make[1]: *** [<встроенное>: kaldi-matrix.o] Ошибка 1
make[1]: выход из каталога «/home/sakair/programming/kaldi/src/matrix»
make: *** [Makefile:175: matrix] Ошибка 2
sakair@msi ~/p/k/src (master) [2]>
  • Вопрос задан
  • 22 просмотра
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
Вот вывод ошибки make test в директории src

1) зачем запускать make test в каталоге src, когда у проекта есть система сборки основанная на CMake и можно запускать make test в каталоге где выполняется сборка?
2) на ubuntu 22.04.5 c libblas-3.10.0, liblapack-3.10.0 и libatlas-3.10.3 сборка завершается успешно и make test в каталоге сборки тоже завершается успешно: 100% tests passed, 0 tests failed out of 132

Команда компиляции для первого файла из приведённого лога с ошибкой при этом такая:
cd /home/jcmvbkbc/tmp/tests/1390844/kaldi/build/src/matrix && /usr/bin/c++ -DHAVE_CLAPACK=1 -DKALDI_NO_PORTAUDIO=1 -Dkaldi_matrix_EXPORTS -I/home/jcmvbkbc/tmp/tests/1390844/kaldi/build/_deps/openfst-src/src/include -I/home/jcmvbkbc/tmp/tests/1390844/kaldi/tools/CLAPACK -I/home/jcmvbkbc/tmp/tests/1390844/kaldi/src/matrix/.. -I/home/jcmvbkbc/tmp/tests/1390844/kaldi/src/base/.. -fPIC -std=c++14 -MD -MT src/matrix/CMakeFiles/kaldi-matrix.dir/kaldi-matrix.cc.o -MF CMakeFiles/kaldi-matrix.dir/kaldi-matrix.cc.o.d -o CMakeFiles/kaldi-matrix.dir/kaldi-matrix.cc.o -c /home/jcmvbkbc/tmp/tests/1390844/kaldi/src/matrix/kaldi-matrix.cc
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы