找不到/ usr / local / lib中的库

月光下

我正在使用称为ohNet的框架来构建应用程序构建框架后,可以通过安装框架make install默认情况下,库安装在/usr/local/[lib|include]文件夹内。好的。

我正在使用Eclipse进行开发。为了使用这个库我必须设置包含路径库(在这种情况下usr/local/include/ohNet),设置链接的搜索路径(-L)( /usr/local/lib/ohNet和特定的库(-l)(在这种情况下,我选择了一个名为库libohNet.so此文件夹中。当我在Eclipse中构建它工作正常的项目,但如果我尝试运行我面对以下消息PROGRAMM:

error while loading shared libraries: libohNet.so: cannot open shared object file: No such file or directory

我已经仔细检查过了,该文件libohNet.so在此目录中!找不到此文件的原因是什么?

我在google上搜索并找到了一些帖子,说是将库安装到那里/usr/local/lib而不是在/usr/lib 这里看到是有问题的。我是否必须在其中配置一些其他设置eclipse以使ld该路径识别库?有什么解决方案?

问候

尼科斯C.

这是运行时错误,而不是构建错误。设置-L标志对于运行时链接程序没有任何作用。您需要做的就是告诉运行时加载程序也在/ usr / local / lib中查找库。您可以通过两种方式做到这一点。首先是将路径添加到LD_LIBRARY_PATH环境变量:

出口LD_LIBRARY_PATH =“ $ LD_LIBRARY_PATH:/ usr / local / lib”

第二个是更新运行时链接程序的配置文件。通过在以下行中,可以在/etc/ld.so.conf文件中发生这种情况:

/ usr /本地/ lib

在该文件中的某个位置,或者通过在/etc/ld.so.conf.d/目录中创建一个包含新路径的新* .conf文件。例如:

/etc/ld.so.conf.d/99local.conf

只是:

/ usr /本地/ lib

在里面。这是推荐的方法,因为它使您可以将自定义库路径与系统设置的路径分开。(此处有“ 99”前缀,以确保文件最后加载是与那里的其他文件相比,这样它就不会抢占可能包含相同库的系统路径。)

在/ etc中修改/创建文件后,需要运行:

ldconfig

作为使更改生效的根源。(此命令更新/etc/ld.so.cache文件,该文件是运行时链接程序使用的实际文件。)

二进制文件还有另一种在运行时查找所需库的方法。实际上,您可以将库路径硬编码到可执行文件本身中。这可以通过设置一个所谓的“ rpath”来实现。这是一个链接器选项,必须从gcc(或g ++)传递到链接器,因此-Wl必须使用选项。链接器选项为-rpath=PATH因此,您需要将其添加到链接标志中:

-Wl,-rpath = / usr / local / lib

不过,我不建议您这样做。当将库与可执行文件(可能与安装程序一起)一起运送时,rpath很有用,然后使用相对rpath(使用rpath $ORIGIN功能)或绝对rpath(例如,当您在/ opt中安装时)来查找那些在运行时捆绑的库。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

g ++在/ usr / local / lib中找不到库

在 /usr/local/bin 中找不到 gnuplot

gcc:在/ usr / local / lib中找不到链接的库,但是/etc/ld/so.conf.d/libc.conf列出了吗?

ssh找不到/ usr / local / bin路径

dbus-uuidgen返回/usr/local/lib/libdbus-1.so.3找不到

在@INC中找不到CPAN.pm(@INC包含:/ usr / local / lib / perl5 / usr / local / share / perl5

如何修复“ dyld:未加载库:/usr/lib/libc++.1.dylib引用自:/ usr / local / bin / node原因:找不到映像跟踪/ BPT陷阱”

安装pyaudio时,pip在/ usr / local / include中找不到portaudio.h

安装在/ usr / local /中的UnixODBC-dev,导致找不到gcc报告sql.h

是否在/ usr / local / lib中搜索共享库?

在以下位置找不到库:/usr/local/cuda-9.0/targets/aarch64-linux/lib/libcublasLt.so.9.0

/ usr / local / lib和/ usr / lib / x86_64-linux-gnu中的库冲突

在/ usr / lib /中找不到jni.h

/usr/bin/ld - 找不到库

mysql:/usr/local/lib/libssl.so.1.1:找不到版本“ OPENSSL_1_1_1”(mysql必需)

Intellij:找不到运行的Git文件:/ usr / local / bin / git

在/ usr / local / lib中使用共享库

Gradle 在 JDK 路径中找不到类根:/usr/local/Cellar/openjdk/15.0.1/libexec/openjdk.jdk/Contents/Home

NVIDIA-SMI 在 /usr/lib/nvidia 中找不到 libnvidia-ml.so 库和任何内容

gcc-/ usr / bin / ld错误:尽管ldconfig列出了它,但在/ usr / local / lib中找不到<library>,并且路径已添加到ld.so.conf

摆脱“ gcc-/ usr / bin / ld:警告lib找不到”

“ dyld:因为找不到映像,所以无法加载插入的库'/usr/lib/libgmalloc.dylib'”

mod_wsgi 错误:ImportError:dlopen(/usr/local/lib/python3.6/site-packages/cv2.so, 2):找不到符号:_iconv

make /usr/bin/ld: 找不到本地库

包括来自/ usr / local / include的头和来自/ usr / local / lib的库

在Centos 6.5中找不到/ usr / bin / realpath

安装了libtool但在/ usr / bin中找不到

/usr/bin/mount: 在 .sh 脚本中找不到

Linux:从/ usr / local / lib加载库时出错