錯誤集錦OSError: cannot load library ‘xx.so’: xx.so: cannot open shared object file: No such file or directory
問題背景
學習使用pynpk時,按照正常的安裝步驟安裝後
$ git clone https://github.com/lqez/npk.git
$ cd npk
$ ./build.sh && cd _build && make install
$ pip install pynpk
錯誤詳情
import npk
時出現以下錯誤
>>> import npk
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/root/npk/npk_env/lib/python2.7/site-packages/npk/__init__.py", line 3, in <module>
from .package import *
File "/root/npk/npk_env/lib/python2.7/site-packages/npk/package.py", line 1, in <module>
from ._cffi import ffi, c
File "/root/npk/npk_env/lib/python2.7/site-packages/npk/_cffi.py", line 80, in <module>
c = ffi.dlopen(dllname)
File "/root/npk/npk_env/lib64/python2.7/site-packages/cffi/api.py", line 150, in dlopen
lib, function_cache = _make_ffi_library(self, name, flags)
File "/root/npk/npk_env/lib64/python2.7/site-packages/cffi/api.py", line 832, in _make_ffi_library
backendlib = _load_backend_lib(backend, libname, flags)
File "/root/npk/npk_env/lib64/python2.7/site-packages/cffi/api.py", line 828, in _load_backend_lib
return backend.load_library(path, flags)
OSError: cannot load library 'libnpk.so': libnpk.so: cannot open shared object file: No such file or directory
典型的
OSError
,找不到指定的檔案,通常這裡設定下指定路徑即可。
解決辦法
以下隻提供
linux
系統下解決辦法,
windows
類似處理即可
在對
npk
進行源碼安裝的時候,會将對應檔案安裝到指定的目錄,如:
(npk_env) [[email protected] ~/npk/npk/_build]# make install
[ 27%] Built target libnpkShared
[ 55%] Built target libnpkStatic
[ 77%] Built target libnpkTests
[ 79%] Built target npk
[100%] Built target npkTests
Install the project...
-- Install configuration: ""
-- Up-to-date: /usr/local/include/npk_error.h
-- Up-to-date: /usr/local/include/npk.h
-- Up-to-date: /usr/local/include/npk_base.h
-- Up-to-date: /usr/local/include/npk_conf.h
-- Up-to-date: /usr/local/include/npk_dev.h
-- Up-to-date: /usr/local/lib/libnpk.a
-- Up-to-date: /usr/local/lib/libnpk.so
-- Up-to-date: /usr/local/bin/npk
将
/usr/local/lib
添加到
so
的搜尋路徑,
ldconfig
使配置生效
(npk_env) [[email protected] ~/npk/npk/_build]# vim /etc/ld.so.conf
include ld.so.conf.d/*.conf
/usr/local/openssl/lib
/usr/local/lib
(npk_env) [[email protected] ~/npk/npk/_build]# ldconfig #使配置生效