首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么找不到我的共享库?

为什么找不到我的共享库?
EN

Stack Overflow用户
提问于 2012-06-20 00:23:31
回答 2查看 22.6K关注 0票数 7

我正在尝试编译一个链接到日落生成的共享库的示例程序。我正在像这样编译程序。

代码语言:javascript
复制
$ gcc -o sd sundown.c -L. -lsundown

然而,当我运行它时,我会得到以下错误。

./sd:加载共享库时出错: libsundown.so:无法打开共享对象文件:没有这样的文件或目录

ls的输出是。

代码语言:javascript
复制
$ ls
libsundown.so  libsundown.so.1  sundown.c  sd

为什么ld找不到共享库

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-20 00:45:28

短期解决方案:

. (或-L标志中的任何内容)添加到LD_LIBRARY_PATH中。当您运行sd时,它将在标准位置和LD_LIBRARY_PATH中查找库。请注意,由于您已经添加了.,只有在您从同一个目录运行sd时,libsundown.so才能工作。

我计划分发编译好的二进制文件。我如何才能在不强迫人们编辑他们的LD_LIBRARY_PATH的情况下发布库呢?

您应该在一个标准位置安装libsundown.so,比如/usr/lib或/usr/local/lib。您可以使用安装程序或make文件,或者像安装或自述( README )这样简单的方法,告诉用户将库放在那里,并确保权限设置为合理的权限。

票数 8
EN

Stack Overflow用户

发布于 2020-10-06 02:10:25

在带有/usr/lib和/usr/lib 64的Centos系统上,如果手动将64位库安装到/usr/lib中,那么在运行时,库可能是不可见的,即使在构建时它是可见的(我使用了autotools,它能够在/usr/lib中找到我的zopfli库,没有任何问题)。当我执行链接到/usr/lib/libzopfli.so.1的my_binary时,我得到了

代码语言:javascript
复制
libzopfli.so.1 => not found

将libzopfly.so.1从/usr/lib移动到/usr/lib 64之后,一切都正常。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11111293

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档