kaldi-asr / kaldi

kaldi-asr/kaldi is the official location of the Kaldi project.
http://kaldi-asr.org
Other
14.11k stars 5.31k forks source link

Build failure, undefined reference to cblas_* #4801

Closed PureTryOut closed 1 year ago

PureTryOut commented 1 year ago

I'm trying to build kaldi on Alpine Linux which uses Musl libc rather than glibc. I managed to make it compile with configure by setting LDFLAGS="$LDFLAGS -lcblas -llapack" but the same does not seem to work with CMake. Of course, blas and lapack are installed.

Why does it fail to link properly to blas?

ninja: job failed: : && /usr/lib/ccache/bin/g++ -Os -fomit-frame-pointer -Os -DNDEBUG -Wl,--as-needed -lcblas -llapack src/matrix/CMakeFiles/sparse-matrix-test.dir/sparse-matrix-test.cc.o -o src/matrix/sparse-matrix-test  -Wl,-rpath,/home/bart/Documents/Git/alpine/aports/testing/kaldi/src/kaldi-f6f4ccaf213f0fe8b26e633a7dc0c802150626a0/build/src/matrix:/home/bart/Documents/Git/alpine/aports/testing/kaldi/src/kaldi-f6f4ccaf213f0fe8b26e633a7dc0c802150626a0/build/src/base:/home/bart/Documents/Git/alpine/aports/testing/kaldi/src/kaldi-f6f4ccaf213f0fe8b26e633a7dc0c802150626a0/build/_deps/openfst-build/src/lib:  -ldl  src/matrix/libkaldi-matrix.so  src/base/libkaldi-base.so  -ldl  /usr/lib/libblas.so  /usr/lib/liblapack.so  _deps/openfst-build/src/lib/libfst.so.16 && :
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_stpsv'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_sgemm'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_dspr2'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_sgemv'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_ddot'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_sdot'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_sscal'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_dsyrk'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_sspr2'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_scopy'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_dspr'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_sgbmv'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_ssymm'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_saxpy'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_dspmv'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_dger'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_sspr'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_ssyrk'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_dgemv'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_dgbmv'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_dcopy'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_drot'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_dtpsv'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_sger'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_srot'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_dsymm'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_stpmv'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_dtpmv'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_sspmv'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_dscal'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_dgemm'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_daxpy'
collect2: error: ld returned 1 exit status
ninja: job failed: : && /usr/lib/ccache/bin/g++ -Os -fomit-frame-pointer -Os -DNDEBUG -Wl,--as-needed -lcblas -llapack src/matrix/CMakeFiles/numpy-array-test.dir/numpy-array-test.cc.o -o src/matrix/numpy-array-test  -Wl,-rpath,/home/bart/Documents/Git/alpine/aports/testing/kaldi/src/kaldi-f6f4ccaf213f0fe8b26e633a7dc0c802150626a0/build/src/matrix:/home/bart/Documents/Git/alpine/aports/testing/kaldi/src/kaldi-f6f4ccaf213f0fe8b26e633a7dc0c802150626a0/build/src/base:/home/bart/Documents/Git/alpine/aports/testing/kaldi/src/kaldi-f6f4ccaf213f0fe8b26e633a7dc0c802150626a0/build/_deps/openfst-build/src/lib:  -ldl  src/matrix/libkaldi-matrix.so  src/base/libkaldi-base.so  -ldl  /usr/lib/libblas.so  /usr/lib/liblapack.so  _deps/openfst-build/src/lib/libfst.so.16 && :
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_stpsv'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_sgemm'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_dspr2'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_sgemv'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_ddot'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_sdot'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_sscal'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_dsyrk'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_sspr2'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_scopy'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_dspr'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_sgbmv'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_ssymm'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_saxpy'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_dspmv'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_dger'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_sspr'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_ssyrk'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_dgemv'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_dgbmv'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_dcopy'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_drot'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_dtpsv'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_sger'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_srot'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_dsymm'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_stpmv'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_dtpmv'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_sspmv'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_dscal'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_dgemm'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_daxpy'
collect2: error: ld returned 1 exit status
ninja: job failed: : && /usr/lib/ccache/bin/g++ -Os -fomit-frame-pointer -Os -DNDEBUG -Wl,--as-needed -lcblas -llapack src/util/CMakeFiles/text-utils-test.dir/text-utils-test.cc.o -o src/util/text-utils-test  -Wl,-rpath,/home/bart/Documents/Git/alpine/aports/testing/kaldi/src/kaldi-f6f4ccaf213f0fe8b26e633a7dc0c802150626a0/build/src/util:/home/bart/Documents/Git/alpine/aports/testing/kaldi/src/kaldi-f6f4ccaf213f0fe8b26e633a7dc0c802150626a0/build/src/matrix:/home/bart/Documents/Git/alpine/aports/testing/kaldi/src/kaldi-f6f4ccaf213f0fe8b26e633a7dc0c802150626a0/build/src/base:/home/bart/Documents/Git/alpine/aports/testing/kaldi/src/kaldi-f6f4ccaf213f0fe8b26e633a7dc0c802150626a0/build/_deps/openfst-build/src/lib:  -ldl  src/util/libkaldi-util.so  src/matrix/libkaldi-matrix.so  src/base/libkaldi-base.so  -ldl  /usr/lib/libblas.so  /usr/lib/liblapack.so  _deps/openfst-build/src/lib/libfst.so.16 && :
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_stpsv'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_sgemm'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_dspr2'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_sgemv'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_ddot'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_sdot'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_sscal'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_dsyrk'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_sspr2'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_scopy'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_dspr'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_sgbmv'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_ssymm'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_saxpy'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_dspmv'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_dger'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_sspr'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_ssyrk'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_dgemv'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_dgbmv'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_dcopy'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_drot'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_dtpsv'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_sger'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_srot'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_dsymm'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_stpmv'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_dtpmv'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_sspmv'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_dscal'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_dgemm'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: src/matrix/libkaldi-matrix.so: undefined reference to `cblas_daxpy'
csukuangfj commented 1 year ago

Can you change

/usr/lib/ccache/bin/g++ -Os -fomit-frame-pointer -Os -DNDEBUG -Wl,--as-needed -lcblas -llapack src/matrix/CMakeFiles/sparse-matrix-test.dir/sparse-matrix-test.cc.o

to

/usr/lib/ccache/bin/g++ -Os -fomit-frame-pointer -Os -DNDEBUG src/matrix/CMakeFiles/sparse-matrix-test.dir/sparse-matrix-test.cc.o -Wl,--as-needed -lcblas -llapack 

and retry?

That is, put -Wl,--as-needed -lcblas -llapack after sparse-matrix-test.cc.o.

PureTryOut commented 1 year ago

Not sure how using CMake? Like I said right now I'm just executing LDFLAGS="$LDFLAGS -lcblas -llapack" cmake <other flags>, I didn't choose the order in which it appeared in the compiler command.

csukuangfj commented 1 year ago

How did you invoke cmake?

PureTryOut commented 1 year ago
LDFLAGS="$LDFLAGS -lcblas -llapack" cmake -B build -G Ninja \
    -DCMAKE_BUILD_TYPE=MinSizeRel \
    -DCMAKE_INSTALL_PREFIX=/usr \
    -DCMAKE_INSTALL_LIBDIR=lib \
    -DKALDI_VERSION="$pkgver"

With $pkgver being 5.5 currently (not sure why CMakeLists.txt doesn't have that set itself).

csukuangfj commented 1 year ago

Could you try the following changes

diff --git a/cmake/gen_cmake_skeleton.py b/cmake/gen_cmake_skeleton.py
index 5925c6369..88df4a0b6 100644
--- a/cmake/gen_cmake_skeleton.py
+++ b/cmake/gen_cmake_skeleton.py
@@ -269,7 +269,7 @@ class CMakeListsLibrary(object):

         if len(self.depends) > 0:
             ret.append("target_link_libraries(" + self.target_name + " PUBLIC")
-            for d in self.depends:
+            for d in self.depends + ['-lcblas', '-llapack'] :
                 ret.append("    " + d)
             ret.append(")\n")

and rerun cmake and ninja?


Assume that libcblas.so and liblapack.so are on your library search path.

PureTryOut commented 1 year ago

Yup, that did the trick! Now I don't even need to manually specify ldflags anymore, awesome.

maniyar1 commented 1 year ago

Hello, I also just hit this issue, so thank you for the help. Should this be PRed? More research to be done?

stale[bot] commented 1 year ago

This issue has been automatically marked as stale by a bot solely because it has not had recent activity. Please add any comment (simply 'ping' is enough) to prevent the issue from being closed for 60 more days if you believe it should be kept open.