链接/注册.so文件

我刚刚使用由自定义第三方供应商提供的一些库编译了一个testing应用程序。 没有安装/软件包pipe理器。 应用程序按预期构build。 但是,当我去运行它,似乎无法find一个必要的.so文件(我坐在同一个目录中):

[diego@localhost Debug]$ ls esdcan libntcan.so.3 makefile objects.mk sources.mk src [diego@localhost Debug]$ ./esdcan ./esdcan: error while loading shared libraries: libntcan.so.3: cannot open shared object file: No such file or directory [diego@localhost Debug]$ ldd esdcan linux-vdso.so.1 => (0x00007fff125ff000) libntcan.so.3 => not found libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00000031d2600000) libm.so.6 => /lib64/libm.so.6 (0x00000031c7600000) libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00000031c8600000) libc.so.6 => /lib64/libc.so.6 (0x00000031c7200000) /lib64/ld-linux-x86-64.so.2 (0x00000031c6e00000) 

我错过了一些我确定的步骤,我完全不知道这一步是什么。

完成构建后运行ldconfig ,并确保当前目录位于/etc/ld.so.conf文件中,以便当前目录是用于查找共享库的受信任目录。

LD_LIBRARY_PATH env变量设置为当前目录

 [diego@localhost Debug]$ LD_LIBRARY_PATH=. ./esdcan 
 /etc/ld.so.conf File containing a list of colon, space, tab, new- line, or comma-separated directories in which to search for libraries. 

你也可以设置$LD_LIBRARY_PATH环境变量。

您可以将其复制到/ usr / lib(这有点侵入)的位置,或者在运行之前尝试设置LD_LIBRARY_PATH = [绝对(?)包含libntcan.so.3的路径]:LD_LIBRARY_PATH。