Using blaslapack

Gleb Popov 6yearold at gmail.com
Mon Oct 16 06:20:29 UTC 2017


Hello.

I'm porting an application (DLib, https://reviews.freebsd.org/D12559) that
uses BLAS and LAPACK, and I have some questions.

1. Is there any pure C implementation that does not require Fortran
compiler?

2. My application looks for cblas_ddot function in BLAS library, but the
default library (netlib) doesn't seem to have that. It has ddot, though, so
I'm not sure if it is a wrong check on app's side, or netlib is indeed
doesn't suit there. For now I've used openblas, but I'm also not sure if it
is a right choice.

3. How to link properly to any of BLAS libraries? All BLAS implementations
blaslapack.mk features require Fortran. This implies USE_GCC=yes, so these
are compiled with GCC, not Clang. Now when I try to link Clang-compiled
DLib to GCC-compiled openblas, I get undefined references:

//usr/local/lib/gcc6/libgfortran.so.3: undefined reference to
`__getf2 at GCC_4.6.0'
//usr/local/lib/gcc6/libgfortran.so.3: undefined reference to
`__floatunditf at GCC_4.6.0'
//usr/local/lib/gcc6/libgfortran.so.3: undefined reference to
`__subtf3 at GCC_4.6.0'
//usr/local/lib/gcc6/libgfortran.so.3: undefined reference to
`__multf3 at GCC_4.6.0'
//usr/local/lib/gcc6/libgfortran.so.3: undefined reference to
`__unordtf2 at GCC_4.6.0'
//usr/local/lib/gcc6/libgfortran.so.3: undefined reference to
`__lttf2 at GCC_4.6.0'
//usr/local/lib/gcc6/libgfortran.so.3: undefined reference to
`__addtf3 at GCC_4.6.0'
//usr/local/lib/gcc6/libgfortran.so.3: undefined reference to
`__gttf2 at GCC_4.6.0'
//usr/local/lib/gcc6/libgfortran.so.3: undefined reference to
`__divtf3 at GCC_4.6.0'
//usr/local/lib/gcc6/libgfortran.so.3: undefined reference to
`__letf2 at GCC_4.6.0'
//usr/local/lib/gcc6/libgfortran.so.3: undefined reference to
`__netf2 at GCC_4.6.0'
//usr/local/lib/gcc6/libgfortran.so.3: undefined reference to
`__floatditf at GCC_4.6.0'
//usr/local/lib/gcc6/libgfortran.so.3: undefined reference to
`__eqtf2 at GCC_4.6.0'
//usr/local/lib/gcc6/libgfortran.so.3: undefined reference to
`__floatsitf at GCC_4.6.0'

I've tracked these symbols to /usr/local/lib/gcc6/libgcc_s.so. But there is
also /usr/lib/libgcc_s.so and it doesn't have such symbols. I suspect this
is the source of the error, but I wasn't able to fix it. Passing -Wl,-rpath
as advised by lang/gcc6 pkg-message doesn't help. The only workaround I
came up with is USE_GCC=yes to compile DLib itself, but that's pretty
unsatisfactory.

Thanks in advance.


More information about the freebsd-ports mailing list