I’m unable to use Plots.jl or FFMPEG with Julia 1.6.2:
julia> using FFMPEG
[ Info: Precompiling FFMPEG [c87230d0-a227-11e9-1b43-d7ebe4e7570a]
ERROR: LoadError: InitError: could not load library "/usr/lib/libavdevice.so"
/opt/julia/julia-1.6.2/bin/../lib/julia/libstdc++.so.6: version `GLIBCXX_3.4.29' not found (required by /usr/lib/libzimg.so.2)
Stacktrace:
[1] dlopen(s::String, flags::UInt32; throw_error::Bool)
@ Base.Libc.Libdl ./libdl.jl:114
[2] dlopen(s::String, flags::UInt32)
@ Base.Libc.Libdl ./libdl.jl:114
[3] macro expansion
@ ~/.julia/packages/JLLWrappers/bkwIo/src/products/library_generators.jl:54 [inlined]
[4] __init__()
@ FFMPEG_jll ~/.julia/packages/FFMPEG_jll/ECokx/src/wrappers/x86_64-linux-gnu.jl:47
[5] _include_from_serialized(path::String, depmods::Vector{Any})
@ Base ./loading.jl:696
[6] _require_search_from_serialized(pkg::Base.PkgId, sourcepath::String)
@ Base ./loading.jl:782
[7] _require(pkg::Base.PkgId)
@ Base ./loading.jl:1020
[8] require(uuidkey::Base.PkgId)
@ Base ./loading.jl:936
[9] require(into::Module, mod::Symbol)
@ Base ./loading.jl:923
[10] include
@ ./Base.jl:386 [inlined]
[11] 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::Nothing)
@ Base ./loading.jl:1235
[12] top-level scope
@ none:1
[13] eval
@ ./boot.jl:360 [inlined]
[14] eval(x::Expr)
@ Base.MainInclude ./client.jl:446
[15] top-level scope
@ none:1
during initialization of module FFMPEG_jll
in expression starting at /home/karthik/.julia/packages/FFMPEG/nERYF/src/FFMPEG.jl:1
ERROR: Failed to precompile FFMPEG [c87230d0-a227-11e9-1b43-d7ebe4e7570a] to /home/karthik/.julia/compiled/v1.6/FFMPEG/jl_WpSZUW.
Stacktrace:
[1] error(s::String)
@ Base ./error.jl:33
[2] compilecache(pkg::Base.PkgId, path::String, internal_stderr::Base.TTY, internal_stdout::Base.TTY, ignore_loaded_modules::Bool)
@ Base ./loading.jl:1385
[3] compilecache(pkg::Base.PkgId, path::String)
@ Base ./loading.jl:1329
[4] _require(pkg::Base.PkgId)
@ Base ./loading.jl:1043
[5] require(uuidkey::Base.PkgId)
@ Base ./loading.jl:936
[6] require(into::Module, mod::Symbol)
@ Base ./loading.jl:923
I’m on Arch Linux, I’m using the version of Julia from julialang.org (NOT my distro’s/AUR package).
Both env vars LD_LIBRARY_PATH and LD_PRELOAD are unset.
I don’t understand why Julia is trying to use /usr/bin/libavdevice.so (and by extension my system’s ffmpeg?) instead of the version that’s available in ~/.julia/artifacts:
$ ls ~/.julia/artifacts/7f40eeb66d90d3026ae5fb68761c263b57adb840/lib/
pkgconfig libavformat.so libpostproc.so.55
libavcodec.so libavformat.so.58 libpostproc.so.55.7.100
libavcodec.so.58 libavformat.so.58.45.100 libswresample.so
libavcodec.so.58.91.100 libavresample.so libswresample.so.3
libavdevice.so libavresample.so.4 libswresample.so.3.7.100
libavdevice.so.58 libavresample.so.4.0.0 libswscale.so
libavdevice.so.58.10.100 libavutil.so libswscale.so.5
libavfilter.so libavutil.so.56 libswscale.so.5.7.100
libavfilter.so.7 libavutil.so.56.51.100
libavfilter.so.7.85.100 libpostproc.so