网站运营
位置:首页>> 网站运营>> 浅谈Linux的库文件

浅谈Linux的库文件

作者:yasaken  发布时间:2021-07-01 08:54:36 

标签:linux,库文件

最近在Linux下使用第三方库Protobuf时,遇到一个问题:可执行程序在运行时报错:“error while loading shared libraries: libprotobuf.so.7: cannot open shared object file: No such file or directory”。于是花时间弄清楚原因,找到解决方案,跟大家共享一下。

1. 什么是库

在windows平台和linux平台下都存在着大量的库。

本质上来说库是一种可执行代码的二进制形式,可以 * 作系统载入内存执行。

由于windows和linux的本质不同,因此二者库的二进制是不兼容的。

2. 库的种类

linux下的库有两种:静态库和共享库(动态库)。

二者的不同点在于代码被载入的时刻不同。

静态库的代码在编译过程中已经被载入可执行程序,因此体积较大。共享库的代码是在可执行程序运行时才载入内存的,在编译过程中仅简单的引用,因此代码体积较小。对于静态库和动态库的选择,需要结合二者的优缺点折中考虑。一般来说,比较通用的库,应该做成共享库。

3.库存在的意义

库是别人写好的现有的,成熟的,可以复用的代码,你可以使用但要记得遵守许可协议。

现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非同寻常。共享库的好处是,不同的应用程序如果调用相同的库,那么     在内存里只需要有一 份该共享库的实例。

4. 库文件在linux下是如何生成的

静态库的后缀是.a,它的产生分两步

Step 1:由源文件编译生成一堆.o,每个.o里都包含这个编译单元的符号表;
Step 2:ar命令将很多.o转换成.a,成为静态库;

动态库的后缀是.so,它由gcc加特定参数编译产生。

例如: $ gcc -fPIC -c *.c $ gcc -shared -Wl,-soname, libfoo.so.1 -o libfoo.so.1.0 *.

5. 库文件是如何命名的,有没有什么规范

在linux下,库文件一般放在/usr/lib和/lib下,

静态库的名字一般为libxxxx.a,其中xxxx是该lib的名称

动态库的名字一般为libxxxx.so.major.minor,xxxx是该lib的名称,major是主版本号, minor是副版本号

6. 如何知道一个可执行程序依赖哪些库

ldd命令可以查看一个可执行程序依赖的共享库,

例如# ldd /bin/lnlibc.so.6
=> /lib/libc.so.6 (0×40021000)/lib/ld-linux.so.2
=> /lib/ld- linux.so.2 (0×40000000)

可以看到ln命令依赖于libc库和ld-linux库

7. 可执行程序在执行的时候如何定位共享库文件

静态库:生成可执行文件时,静态库已经作为自身一部分链接进了可执行文件中,故执行时不需要再定位,也就是说再不依赖于库文件;

动态库:需要知道动态库的路径,参考另一篇博客;

8. 在新安装一个库之后如何让系统能够找到他

如果安装在/lib或者/usr/lib下,那么ld默认能够找到,无需其他操作。

如果安装在其他目录,需要将其添加到/etc/ld.so.cache文件中,步骤如下:

1. 编辑/etc/ld.so.conf文件,加入库文件所在目录的路径;

2. 运行ldconfig,该命令会重建/etc/ld.so.cache文件;

3. ldconfig命令需要root权限;

总结

来源:http://www.linuxidc.com/Linux/2012-03/57023.htm

0
投稿

猜你喜欢

  • Foxmail Server(以下简称FMS)可以搭建出功能强大的邮件服务器。本文以FMS For Windows 2.0为例,从其设置、管
  • ansibleansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、f
  • 软件发行周期的终结正如在上面关于Google和netscape的讨论中所指出的,互联网时代定义特性之一就是,它是以服务方式传递,而不是产品。
  • Docker简介Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Li
  • 第一步:打开程序目录dede/templets/soft_add.htm 和 soft_edit.htm找到下面这句if(endNum>
  • 今天我会讲述如何为你的个人网站或者博客安装SSL 证书,来保护你的访问者和网站之间通信的安全。安全套接字层或称SSL,是一种加密网站和浏览器
  • 现在或多或少大家对于Seo就像是千百年来中国人对月亮上的嫦娥一样充满着美好的想象。其实Seo对此是否有如此神通让我们网站一夜成名?答案肯定是
  • 草根网站比门户网站更有前途,此话并非空穴来风,在网络发展不停的泡沫和务实中挣扎中,无数的web2.0 等概念性的网站,越来越经受不起现实的压
  • 我是一个菜鸟,很菜的那种,在网上下载了个程序,然后放到了网上,就那样放着很少管它。期间我经历了网站被人挂马,idc服务商虚拟主机不稳定,网站
  • 在实际应用过程中可能会遇到DNS解析错误的问题,就是说当我们访问一个域名时无法完成将其解析到IP地址的工作,而直接输入网站IP却可以正常访问
  • 自从seo大师丘仕达把挖土豆和163邮箱和其他的单页面站成功的优化后,就引发了SEO界的强烈反响,众多的追随者和后来者前仆后继的学习SEO,
  • 本文主要讲述如何分析Web服务器记录,在众多记录里查找黑客攻击的蛛丝马迹,并针对当今流行的两类Web服务器给出具体的一些实例。现今的网络,安
  • 电子商务如今风靡国内各个行业,不仅在沿海地区迅猛发展,湖南的电子商务也在高速发展中,逐步形成了一支电子商务湘军,为了帮助电子商务湘军更好的发
  •  Win2003 Server的安全性较之Win2K确实有了很大的提高,但是用Win2003 Server作为服务器是否就真的安全
  • 笔者是某单位大楼的一名网络管理员,平时主要任务就是维护大楼局域网网络的安全、稳定运行。最近一段时间,隔三差五的,大楼局域网网络总会发生一些故
  • Robots.txt 带来的好处:1. 几乎所有的搜索引擎 Spider 都遵循 robots.txt 给出的爬行规则,协议规定搜索引擎 S
  • blog(部落格)Weblog网络日志(网志);从1993年NCSA和网景的“What’s New”栏目开始(博客网站的雏形),Blog诞生
  • 备份管理员通常采用传统的物理备份解决方案,可能会误认为VCB是对虚拟数据中心的完整解答,因此还需要为VCB做好充足的准备和调研。选购VMwa
  • 本周一Google公司对外宣布推出三种还处于测试阶段的新搜索模式,这些新功能能对同一关键词得出不同的搜索返回结果。1月31日消息,据国外媒体
  • 针对BIND DNS服务软件的安全配置情况,我们要充分利用BIND自身已经实现的保护功能,加强BIND安全性,从而能抵御目前已知的BIND安
手机版 网站运营 asp之家 www.aspxhome.com