Как помочь ноутбуку iJulia найти внешне скомпилированную библиотеку
Я пытаюсь запустить скомпилированную версию mxnet в записной книжке iJulia, но когда я выполняю команду using MXNet
Я получаю следующую ошибку:
InitError: error compiling __init__: error compiling _populate_symbol_creator_cache!: error compiling _get_atomic_symbol_creators: could not load library "/home/milton/mxnet/lib/libmxnet.so"
libcudart.so.7.5: cannot open shared object file: No such file or directory
during initialization of module mx
in _include_from_serialized(::String) at ./loading.jl:150
in _require_from_serialized(::Int64, ::Symbol, ::String, ::Bool) at ./loading.jl:187
in _require_search_from_serialized(::Int64, ::Symbol, ::String, ::Bool) at ./loading.jl:217
in require(::Symbol) at ./loading.jl:371
Поняв, что это может быть очищено ENV, я добавил:
ENV["MXNET_HOME"] = "/home/milton/mxnet"
ENV["LD_LIBRARY_PATH"] = "/home/milton/mxnet/lib:/usr/local/cuda/lib64"
Это позволяет мне выполнить инструкцию using MXNet
без ошибок, но снова вызывает ошибку при попытке выполнить какие-либо команды из библиотеки mxnet
error compiling #Variable#215: could not load library "/home/milton/programming/mxnet/lib/libmxnet.so"
libcudart.so.7.5: cannot open shared object file: No such file or directory
in Variable(::Symbol) at /home/milton/.julia/v0.5/MXNet/src/symbolic-node.jl:232
Как это исправить? Где-то еще мне нужно определить путь? Все отлично работает из REPL.
1 ответ
Я получил эту работу с некоторой помощью на GitHub. Я узнал там, что LD_LIBRARY_PATH
обрабатывается загрузчиком динамических ссылок и исправляется при запуске программы, как описано в ответе на этот вопрос SO. Несмотря на то, что он выглядит измененным, когда возится с ним в блокноте, это не так.
Чтобы заставить это работать, я начинаю jupyter-notebook
в терминале с надлежащим LD_LIBRARY_PATH
установить (в моем случае мой .bashrc
автоматически включает путь к моей скомпилированной mxnet/lib
так что работает в любом локальном терминале. Это не в моей глобальной настройке).