天天看點

錯誤集錦OSError: cannot load library ‘xx.so‘: xx.so: cannot open shared object file: No such file or dir

錯誤集錦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  #使配置生效