# "build ThinkJulia" fails on Windows 10 because "unable to open libLLVM!"

**URL:** <https://discourse.julialang.org/t/build-thinkjulia-fails-on-windows-10-because-unable-to-open-libllvm/86736>\
**Category:** New to Julia\
**Tags:** question, package, teaching\
**Created:** [September 3, 2022, 5:06pm UTC](https://discourse.julialang.org/t/build-thinkjulia-fails-on-windows-10-because-unable-to-open-libllvm/86736 "2022-09-03T17:06:12Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Castilhos](https://avatars.discourse-cdn.com/v4/letter/c/7cd45c/32.png) [@Castilhos](https://discourse.julialang.org/u/Castilhos)\
**Post date:** [September 3, 2022, 5:06pm UTC](https://discourse.julialang.org/t/build-thinkjulia-fails-on-windows-10-because-unable-to-open-libllvm/86736/1 "2022-09-03T17:06:12Z")

</div>

Hello,

I am running into an Error message: “LoadError: Unable to open libLLVM!”.

I was trying to install the ThinkJulia package on a Windows 10 for my child. I ran into a problem which and I am not sure how to solve it.

I added the ThinkJulia.jl package as suggested on the book and tried the command “using ThinkJulia” and it didn’t work. Then, I tried “build ThinkJulia” which failed because of ImageMagick. I tried “build ImageMagick” and end up on the same error.

The problem seems to be access or presence of libLLVM which seems to have different solutions on different contexts.

Does anyone knows how to correct this error?

Please, let me know. New to Julia, so, the solution may be obvious to someone, here. I am hoping this is the right place in this forum.

The logs are below.

Thank you!  
Castilho

* * *

julia\> using ThinkJulia  
[Info: Precompiling ThinkJulia [a7f2b756-c18b-4c7f-87da-faca9ac81b29]  
[Info: Skipping precompilation since **precompile** (false). Importing ThinkJulia [a7f2b756-c18b-4c7f-87da-faca9ac81b29].

(process:4204): GLib-GIO-WARNING \*\*: 09:36:23.251: Unexpectedly, UWP app `KDEe.V.Okular_22.401.1031.0_x64__7vt06qxq7ptv8' (AUMId `KDEe.V.Okular\_7vt06qxq7ptv8!KDEe.V.Okular’) supports 5 extensions but has no verbs  
[Info: Precompiling Plots [91a5bcdd-55d7-5caf-9e0b-520d859cae80]

(process:15332): GLib-GIO-WARNING \*\*: 09:36:49.360: Unexpectedly, UWP app `KDEe.V.Okular_22.401.1031.0_x64__7vt06qxq7ptv8' (AUMId `KDEe.V.Okular\_7vt06qxq7ptv8!KDEe.V.Okular’) supports 5 extensions but has no verbs  
ERROR: LoadError: ThinkJulia not installed properly, run Pkg.build(“ThinkJulia”), restart Julia and try again  
Stacktrace:  
[1] error(s::String)  
@ Base .\error.jl:35  
[2] top-level scope  
@ C:\Users\CurrentUser.julia\packages\ThinkJulia\REhsz\src\ThinkJulia.jl:15  
[3] include  
@ .\Base.jl:419 [inlined]  
[4] \_require(pkg::Base.PkgId)  
@ Base .\loading.jl:1367  
[5] \_require\_prelocked(uuidkey::Base.PkgId)  
@ Base .\loading.jl:1200  
[6] macro expansion  
@ .\loading.jl:1180 [inlined]  
[7] macro expansion  
@ .\lock.jl:223 [inlined]  
[8] require(into::Module, mod::Symbol)  
@ Base .\loading.jl:1144  
in expression starting at C:\Users\CurrentUser.julia\packages\ThinkJulia\REhsz\src\ThinkJulia.jl:1

julia\>

* * *

(@v1.8) pkg\> build ThinkJulia  
Building GR ─────────→ `C:\Users\CurrentUser\.julia\scratchspaces\44cfe95a-1eb2-52ea-b672-e2afdf69b78f\7ea6f715b7caa10d7ee16f1cfcd12f3ccc74116a\build.log`  
Building Plots ──────→ `C:\Users\CurrentUser\.julia\scratchspaces\44cfe95a-1eb2-52ea-b672-e2afdf69b78f\484ade6d734feb43c06721c689155eb4aa3259f5\build.log`  
Building ImageMagick → `C:\Users\CurrentUser\.julia\scratchspaces\44cfe95a-1eb2-52ea-b672-e2afdf69b78f\54dfa264804aefc44630c96619474e683a522d78\build.log`  
ERROR: Error building `ImageMagick`:  
ERROR: LoadError: Unable to open libLLVM!  
Stacktrace:  
[1] error(s::String)  
@ Base .\error.jl:35  
[2] (::BinaryProvider.var"#open\_libllvm#124")()  
@ BinaryProvider C:\Users\CurrentUser.julia\packages\BinaryProvider\U2dKK\src\PlatformNames.jl:652  
[3] detect\_cxx11\_string\_abi()  
@ BinaryProvider C:\Users\CurrentUser.julia\packages\BinaryProvider\U2dKK\src\PlatformNames.jl:655  
[4] detect\_compiler\_abi()  
@ BinaryProvider C:\Users\CurrentUser.julia\packages\BinaryProvider\U2dKK\src\PlatformNames.jl:668  
[5] top-level scope  
@ C:\Users\CurrentUser.julia\packages\BinaryProvider\U2dKK\src\PlatformNames.jl:685  
[6] include(mod::Module, \_path::String)  
@ Base .\Base.jl:419  
[7] include(x::String)  
@ BinaryProvider C:\Users\CurrentUser.julia\packages\BinaryProvider\U2dKK\src\BinaryProvider.jl:1  
[8] top-level scope  
@ C:\Users\CurrentUser.julia\packages\BinaryProvider\U2dKK\src\BinaryProvider.jl:12  
[9] include  
@ .\Base.jl:419 [inlined]  
[10] include\_package\_for\_output(pkg::Base.PkgId, input::String, depot\_path::Vector{String}, dl\_load\_path::Vector{String}, load\_path::Vector{String}, concrete\_deps::Vector{Pair{Base.PkgId, UInt64}}, source::String)  
@ Base .\loading.jl:1554  
[11] top-level scope  
@ stdin:1  
in expression starting at C:\Users\CurrentUser.julia\packages\BinaryProvider\U2dKK\src\PlatformNames.jl:685  
in expression starting at C:\Users\CurrentUser.julia\packages\BinaryProvider\U2dKK\src\BinaryProvider.jl:1  
in expression starting at stdin:1  
ERROR: LoadError: Failed to precompile BinaryProvider [b99e7846-7c00-51b0-8f62-c81ae34c0232] to C:\Users\CurrentUser.julia\compiled\v1.8\BinaryProvider\jl\_8B6A.tmp.  
Stacktrace:  
[1] error(s::String)  
@ Base .\error.jl:35  
[2] compilecache(pkg::Base.PkgId, path::String, internal\_stderr::IO, internal\_stdout::IO, keep\_loaded\_modules::Bool)  
@ Base .\loading.jl:1705  
[3] compilecache  
@ .\loading.jl:1649 [inlined]  
[4] \_require(pkg::Base.PkgId)  
@ Base .\loading.jl:1337  
[5] \_require\_prelocked(uuidkey::Base.PkgId)  
@ Base .\loading.jl:1200  
[6] macro expansion  
@ .\loading.jl:1180 [inlined]  
[7] macro expansion  
@ .\lock.jl:223 [inlined]  
[8] require(into::Module, mod::Symbol)  
@ Base .\loading.jl:1144  
[9] include(fname::String)  
@ Base.MainInclude .\client.jl:476  
[10] top-level scope  
@ none:5  
in expression starting at C:\Users\CurrentUser.julia\packages\ImageMagick\adWD8\deps\build.jl:1

(@v1.8) pkg\>

* * *

(@v1.8) pkg\> build ImageMagick  
Building ImageMagick → `C:\Users\CurrentUser\.julia\scratchspaces\44cfe95a-1eb2-52ea-b672-e2afdf69b78f\54dfa264804aefc44630c96619474e683a522d78\build.log`  
ERROR: Error building `ImageMagick`:  
ERROR: LoadError: Unable to open libLLVM!  
Stacktrace:  
[1] error(s::String)  
@ Base .\error.jl:35  
[2] (::BinaryProvider.var"#open\_libllvm#124")()  
@ BinaryProvider C:\Users\CurrentUser.julia\packages\BinaryProvider\U2dKK\src\PlatformNames.jl:652  
[3] detect\_cxx11\_string\_abi()  
@ BinaryProvider C:\Users\CurrentUser.julia\packages\BinaryProvider\U2dKK\src\PlatformNames.jl:655  
[4] detect\_compiler\_abi()  
@ BinaryProvider C:\Users\CurrentUser.julia\packages\BinaryProvider\U2dKK\src\PlatformNames.jl:668  
[5] top-level scope  
@ C:\Users\CurrentUser.julia\packages\BinaryProvider\U2dKK\src\PlatformNames.jl:685  
[6] include(mod::Module, \_path::String)  
@ Base .\Base.jl:419  
[7] include(x::String)  
@ BinaryProvider C:\Users\CurrentUser.julia\packages\BinaryProvider\U2dKK\src\BinaryProvider.jl:1  
[8] top-level scope  
@ C:\Users\CurrentUser.julia\packages\BinaryProvider\U2dKK\src\BinaryProvider.jl:12  
[9] include  
@ .\Base.jl:419 [inlined]  
[10] include\_package\_for\_output(pkg::Base.PkgId, input::String, depot\_path::Vector{String}, dl\_load\_path::Vector{String}, load\_path::Vector{String}, concrete\_deps::Vector{Pair{Base.PkgId, UInt64}}, source::String)  
@ Base .\loading.jl:1554  
[11] top-level scope  
@ stdin:1  
in expression starting at C:\Users\CurrentUser.julia\packages\BinaryProvider\U2dKK\src\PlatformNames.jl:685  
in expression starting at C:\Users\CurrentUser.julia\packages\BinaryProvider\U2dKK\src\BinaryProvider.jl:1  
in expression starting at stdin:1  
ERROR: LoadError: Failed to precompile BinaryProvider [b99e7846-7c00-51b0-8f62-c81ae34c0232] to C:\Users\CurrentUser.julia\compiled\v1.8\BinaryProvider\jl\_203B.tmp.  
Stacktrace:  
[1] error(s::String)  
@ Base .\error.jl:35  
[2] compilecache(pkg::Base.PkgId, path::String, internal\_stderr::IO, internal\_stdout::IO, keep\_loaded\_modules::Bool)  
@ Base .\loading.jl:1705  
[3] compilecache  
@ .\loading.jl:1649 [inlined]  
[4] \_require(pkg::Base.PkgId)  
@ Base .\loading.jl:1337  
[5] \_require\_prelocked(uuidkey::Base.PkgId)  
@ Base .\loading.jl:1200  
[6] macro expansion  
@ .\loading.jl:1180 [inlined]  
[7] macro expansion  
@ .\lock.jl:223 [inlined]  
[8] require(into::Module, mod::Symbol)  
@ Base .\loading.jl:1144  
[9] include(fname::String)  
@ Base.MainInclude .\client.jl:476  
[10] top-level scope  
@ none:5  
in expression starting at C:\Users\CurrentUser.julia\packages\ImageMagick\adWD8\deps\build.jl:1

(@v1.8) pkg\>

---

<div class="post-metadata">

**Author:** ![giordano](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/giordano/32/2166_2.png) [@giordano](https://discourse.julialang.org/u/giordano)\
**Post date:** [September 3, 2022, 8:04pm UTC](https://discourse.julialang.org/t/build-thinkjulia-fails-on-windows-10-because-unable-to-open-libllvm/86736/2 "2022-09-03T20:04:43Z")

</div>

Welcome! Unfortunately `BinaryProvider` is an _old_ package which doesn’t work on new versions of Julia (it used to use rely on some internals of Julia) and, crucially, on new hardware that it was invented after the package stopped being maintained (like Apple Silicon).

This PR should help (but will have to wait for the author to try it out):

> <https://github.com/BenLauwens/ThinkJulia.jl/pull/54>
>
> \`BinaryProvider.jl\` is an \_old\_ package which doesn't work in newer versions of …Julia and more crucially on new hardware (e.g. Apple Silicon): https://discourse.julialang.org/t/build-thinkjulia-fails-on-windows-10-because-unable-to-open-libllvm/86736.
> 
> This PR uses \[\`Gdbm\_jll.jl\`\](https://github.com/JuliaBinaryWrappers/Gdbm\_jll.jl), which is the modern way of dealing with binary dependencies. The downside is that it requires Julia v1.3 (which at this point is almost 3-year old and the LTS nowadays is v1.6), the upside is that this has a chance of actually working on newer versions of Julia and new hardware.
> 
> Note that I couldn't test this package since it has no tests at all: https://github.com/BenLauwens/ThinkJulia.jl/blob/33d130e2fdd088491e95c73721724533cd68c6c9/test/runtests.jl#L1

---

<div class="post-metadata">

**Author:** ![cormullion](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/cormullion/32/49131_2.png) [@cormullion](https://discourse.julialang.org/u/cormullion)\
**Post date:** [September 4, 2022, 1:27pm UTC](https://discourse.julialang.org/t/build-thinkjulia-fails-on-windows-10-because-unable-to-open-libllvm/86736/3 "2022-09-04T13:27:45Z")

</div>

The trouble with books is that they don’t get updates.

Since the following paragraph was written (3 or 4 years ago, apparently):

> The easiest way to run Julia code is by going to [https://juliabox.com](https://juliabox.com/) and starting a free session. Both the REPL and a notebook interface are available. If you want to have Julia locally installed on your computer, you can download [JuliaPro](https://juliacomputing.com/products/juliapro.html)for free from Julia Computing. It consists of a recent Julia version, the Juno interactive development environment based on Atom, and a number of preinstalled Julia packages.

quite a lot has changed; Julia development moves quickly.

While you should be able to read and learn from a lot of the book’s explanatory content today, some of the specific code examples might not work, particularly if you can’t get `ThinkJulia.jl` to install.
