# Error: no BLAS/LAPACK library loaded!

**URL:** <https://discourse.julialang.org/t/error-no-blas-lapack-library-loaded/81896>\
**Category:** General Usage\
**Created:** [May 30, 2022, 2:25am UTC](https://discourse.julialang.org/t/error-no-blas-lapack-library-loaded/81896 "2022-05-30T02:25:51Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![PetrKryslUCSD](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/petrkryslucsd/32/215825_2.png) [@PetrKryslUCSD](https://discourse.julialang.org/u/PetrKryslUCSD)\
**Post date:** [May 30, 2022, 2:25am UTC](https://discourse.julialang.org/t/error-no-blas-lapack-library-loaded/81896/1 "2022-05-30T02:25:51Z")

</div>

This error started popping up. Is there a cure?

---

<div class="post-metadata">

**Author:** ![Joris\_Pinkse](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/joris_pinkse/32/216398_2.png) [@Joris\_Pinkse](https://discourse.julialang.org/u/Joris_Pinkse)\
**Post date:** [May 30, 2022, 3:05am UTC](https://discourse.julialang.org/t/error-no-blas-lapack-library-loaded/81896/2 "2022-05-30T03:05:07Z")

</div>

context?

---

<div class="post-metadata">

**Author:** ![PetrKryslUCSD](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/petrkryslucsd/32/215825_2.png) [@PetrKryslUCSD](https://discourse.julialang.org/u/PetrKryslUCSD)\
**Post date:** [May 30, 2022, 3:32am UTC](https://discourse.julialang.org/t/error-no-blas-lapack-library-loaded/81896/3 "2022-05-30T03:32:17Z")

</div>

I call

```julia
function dgetrf!(m::IT, n::IT, A::SubArray{FT, 1, Vector{FT}, Tuple{UnitRange{IT}}, true}, lda::IT, ipiv::SubArray{IT, 1, Vector{IT}, Tuple{UnitRange{IT}}, true}) where {IT, FT}
    info = Ref{LinearAlgebra.BLAS.BlasInt}()
    @show __blas_lib
    @show __DGETRF_PTR = dlsym(__blas_lib, @__blas(dgetrf_))
    ccall(__DGETRF_PTR, Cvoid,
        (Ref{LinearAlgebra.BLAS.BlasInt}, Ref{LinearAlgebra.BLAS.BlasInt}, Ptr{FT},
            Ref{LinearAlgebra.BLAS.BlasInt}, Ptr{LinearAlgebra.BLAS.BlasInt}, Ptr{LinearAlgebra.BLAS.BlasInt}),
        m, n, A, lda, ipiv, info)
    @show info[]
    return info[] #Error code is stored in LU factorization type
end

```

The printouts are

```julia
__blas_lib = Ptr{Nothing} @0x0000000065e00000                            
__DGETRF_PTR = dlsym(__blas_lib, #= C:\Users\pkonl\Documents\00WIP\Sparspak.jl\src\SparseSpdMethod\SpkSpdMMops.jl:226 =# @__blas(dgetrf_)) = Ptr{Nothing} @0x0000000065e0c0d4                                              
Error: no BLAS/LAPACK library loaded!                                    
info[] = 233980048 

```

The blas library was opened as `const __blas_lib = dlopen(LinearAlgebra.BLAS.libblastrampoline)`.

---

<div class="post-metadata">

**Author:** ![mkitti](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mkitti/32/12459_2.png) [@mkitti](https://discourse.julialang.org/u/mkitti)\
**Post date:** [May 30, 2022, 5:15am UTC](https://discourse.julialang.org/t/error-no-blas-lapack-library-loaded/81896/4 "2022-05-30T05:15:38Z")

</div>

> [@PetrKryslUCSD](#):
>
> The blas library was opened as `const __blas_lib = dlopen(LinearAlgebra.BLAS.libblastrampoline)` .

That is not going to work. If you are going to use `dlopen`, this needs to be done at runtime, not during precompilation.

The closest would be:

```julia
module Foo

const __blas_lib_ref = Ref{Ptr{Nothing}}()

function __init__ ()
    __blas_lib_ref[] = dlopen(LinearAlgebra.BLAS.libblastrampoline).
end

end

```

---

<div class="post-metadata">

**Author:** ![PetrKryslUCSD](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/petrkryslucsd/32/215825_2.png) [@PetrKryslUCSD](https://discourse.julialang.org/u/PetrKryslUCSD)\
**Post date:** [May 30, 2022, 12:53pm UTC](https://discourse.julialang.org/t/error-no-blas-lapack-library-loaded/81896/5 "2022-05-30T12:53:07Z")

</div>

That is a good point. So far I have only `test`ed it, and that worked. Your code looks great. Thanks!
