关于glibc(底层的库) 版本升级的问题 ,以及静态库和动态库,及ldconfig的作用缺少库文件的解决办法和库文件不对

有篇很好的文档,链接如下:
https://www.cnblogs.com/Yimi/p/7892007.html
明白为甚么要升级,因为系统版本太低
怎么查询底层库的命令:strings /lib64/libc.so.6 | grep GLIBC
还有 库文件和头文件的问题,
ldd 和ldconfig 命令
安装的时候除了点问题,就是安装完,报
ls: relocation error: /lib64/libpthread.so.0: symbol __vdso_clock_gettime, version GLIBC_PRIVATE not defined in file libc.so.6 with link time reference

结果是不能用,我做了把libc.so.6 删除,然后在 和高版本库软链接起来。
需要:LD_PRELOAD=/lib64/libc-2.15.so ln -s/lib64/libc-2.15.so lib64/libc.so.6

静态库直接进行参与编译,不需要在进行调用了,而动态库只是文件名进行参与编译,但是用的时候需要调用,还有
在这里插入图片描述
只是两个库直接区别的链接:https://blog.csdn.net/wsq119/article/details/82285480

错误"error while loading shared libraries: xxx.so.x" 的原因和解决办法
一般我们在Linux下执行某些外部程序的时候可能会提示找不到共享库的错误,比如:
error while loading shared libraries: libprotobuf.so.9: cannot open shared object file: No such file or directory

这里写图片描述

原因一般有两个,一个是操作系统里确实没有包含该共享库(lib*.so.*文件)或者共享库版本不对,遇到这种情况那就去网上下载并安装上即可。

下面是完整的连接:https://blog.csdn.net/Leeds1993/article/details/73274818
可以仔细看看
原因一般有两个,一个是操作系统里确实没有包含该共享库(lib*.so.*文件)或者共享库版本不对,遇到这种情况那就去网上下载并安装上即可。

另外一个原因就是已经安装了该共享库,但执行需要调用该共享库的程序的时候,程序按照默认共享库路径找不到该共享库文件。
如上图,编译、执行protobuf示例代码时报该错,但在目录/usr/local/lib下我们可以看到libprotobuf.so.9是存在的:

说得很好: 一般库文件的问题,还有一点你要知道有哪些库文件在哪些位置,还有头文件的位置
软件包由二进制文件、库文件、配置文件、帮助文件、头文件等这重要的部分组成。他们分别存放在系统的那些路径里面?

二进制文件:/bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin, /usr/local/sbin

库文件:/lib, /usr/lib, /usr/local/lib

配置文件:/etc

帮助文件:/usr/share/man, /usr/local/share/man, {像README, INSTALL文件主 要存放在 /usr/share/doc}

头文件:/usr/include/

可以安装相应的包,或者在另外一台安装系统或包进行复制黏贴,其他的我也想不到
记得如果库文件不对可以去相应的位置查找,或者是没有复制过来,顶替旧的
特别是升级openssl 的时候, 谨记可以看看centos7 升级openssl 的过程,

还有头文件的位置,如果缺少头文件知道怎么去找了

在这里插入图片描述
这个就是 库文件不对导致的问题,当然这个问题有很多原因都可导致的,
一个安装包安装运行需要哪些条件
一是, 系统的版本64位 还是32位, 是linux还是windows ,依赖包,依赖库,大概就这些吧

发布了45 篇原创文章 · 获赞 0 · 访问量 2093

猜你喜欢

转载自blog.csdn.net/weixin_43513408/article/details/100782451