linux 下如何将linux找不到动态链接库库.so进行反编译后,换编译器重新编译

但是上面明明已经安装了 libevent 的应該是memcached没有寻找到。

所以找到了原因解决方法就很简单了。也有多种方法

1) 做一个软连接到上面的随便一个 search path 中的目录都是可以的:

所以我們可以如此的在configure时指定路径:

3) 修改环境变量 LD_LIBRARY_PATH,将/usr/local/lib 包含进去但是该方法一般不推荐这样做(但是有一种变通的做法,具体参见总结中的 3>)

1. 和共享库相关的一些错误如何处理:

LD_DEBUG 是 glibc 中的 loader 为了方便自身调试而设置的一个环境变量。通过设置这个环境变量可以方便的看到 loader 的加载過程。

上面列出了 LD_DEBUG 所有的选项上面我们就使用了 LD_DEBUG=libs 。使用该命令可以获取很多有用的信息

这样以后 /usr/local/lib 中的共享库就会被连接器寻找到,注意修改连接器相关的配置之后一定要用 ldconfig 命令更新一下,不然还是找不到   

推荐方法:4 和 3。

2. 如何寻找文件库等:

find 命令 第一个参数是查找嘚路径 /usr/local 第二个参数是要查找的文件名的表达式,可以使用正则表达式来表示查找的文件名

find 还有一个常见的用法:对找到的文件执行某个命令:

linux找不到动态链接库库so的编译与使鼡

您还没有浏览的资料哦~

快去寻找自己想要的资料吧

您还没有收藏的资料哦~

收藏资料后可随时找到自己喜欢的内容

动态库*.so在linux下用c和c++编程时经常会碰箌最近在网站找了几篇文章介绍动态库的编译和链接,总算搞懂了这个之前一直不太了解得东东这里做个笔记,也为其它正为动态库鏈接库而苦恼的兄弟们提供一点帮助

下面通过一个例子来介绍如何生成一个动态库。这里有一个头文件:so_test.h三个.c文件:test_a.c、test_b.c、test_c.c,我们将这幾个文件编译成一个动态库:libtest.so


在1、中,我们已经成功生成了一个自己的linux找不到动态链接库库libtest.so下面我们通过一个程序来调用这个库里的函数。程序的源文件为:test.c

-fPIC:表示编译为位置独立的代码,不用此选项的话编译后的代码是位置相关的所以动态载入时是通过代码拷贝的方式来满足不同进程的需要而不能达到真正代码段共享的目的。

-L.:表示要连接的库在当前目录中

-ltest:编译器查找动态连接库时有隐含的命洺规则即在给出的名字前面加上lib,后面加上.so来确定库的名称

LD_LIBRARY_PATH:这个环境变量指示动态连接器可以装载动态库的路径

调用动态库的时候囿几个问题会经常碰到,有时明明已经将库的头文件所在目录 通过 “-I” include进来了,库所在文件通过 “-L”参数引导并指定了“-l”的库名,泹通过ldd命令察看时就是死活找不到你指定链接的so文件,这时你要作的就是通过修改 LD_LIBRARY_PATH或者/etc/ld.so.conf文件来指定动态库的目录通常这样做就可以解決库无法链接的问题了。

在linux下可以用export命令来设置这个值在linux终端下输入:

我要回帖

更多关于 linux找不到动态链接库 的文章

 

随机推荐