chapter22:源码与Tarball之(3)-函数库的管理

一.函数库的两种类型

(1)静态函数库

扩展名为libxxx.a

在编译的时候整合到执行程序中.所以文件会相对比较大.

可以独立执行.

如果函数库升级,则整个程序都要重新编译.

(2)动态函数库

扩展名为libxxx.so

可执行文件在要用到函数库的时候才去读取,文件相对小些.

不能独立执行.函数库的目录也不能改变.

函数库升级后,可执行文件不用重新编译.所以升级方便.

目前Linux distribution一般使用动态函数库,因为升级方便.大多数函数库放在/usr/lib, /lib下面,还在很多的函数由kernel提供,也就是放在/lib/modules需.不同版本的内核的函数库很不一样,所以kernel 2.4版本系统不要想将内核升级到2.6.等,很容易因为函数库的不同的导致很多软件不能使用.

二.如何将函数库先加载到内存中以增加性能

使用ldconfig与/etc/ld.so.conf可以将常用的函数库先加载到内存中以提高性能.

三.如何判断一个可执行的程序含有什么动态函数库

可以使用ldd命令,如我们想要知道/usr/bin/passwod这个程序要用到什么动态函数库,可以这样

里面可以看到PAM(身份验证)模块.,我们再找出/lib/libc.so.6这个函数相关的函数库(注意它的路径)

四.验证软件的正确性

只说明下如何进行验证.

还是以ntp为例子.官网的md5为下图

下载后验证为

两者相同,因此安全.

时间: 2024-10-24 18:35:38

chapter22:源码与Tarball之(3)-函数库的管理的相关文章

[Go语言]从Docker源码学习Go——结构和函数的定义

Docker在最近很火,而作为Docker的开发语言-Go也再次被大家提到. 已经使用Docker一段时间了,但是对于源码,尤其是其开发语言Go却一直是一知半解. 最近准备利用空余时间从Docker源代码入手来学习一下Go,同时对Docker的实现也希望可以提高一个层次. 有兴趣的可以一起讨论,学习. 准备工作: 1. Docker源代码https://github.com/docker/docker (版本1.1.2) 2. 安装开发工具LiteIDE, 这个是官方的Go语言的IDE 3. G

nginx源码分析--ngx_http_optimize_servers()函数

这个函数做了连部分工作:1)以端口为入口点 将有用的信息存放到hash表内 2)调用ngx_http_init_listening()函数 对端口进行监听 1. 在ngx_http_core_main_conf_t结构体中有一个字段为ports,是一个数组,数组内存放的全是ngx_http_conf_port_t:对于每一个端口信息(ngx_http_conf_port_t),调用 ngx_http_server_names函数,同时也调用ngx_http_init_listening函数,这里

鸟哥Linux私房菜笔记(四):源码与Tarball、

源码与Tarball file指令用于查看文件是否为二进制文件,如 file /bin/bash gcc hello.c 生成a.out可执行文件:gcc -c hello.c 生成与源文件同名.o文件hell.o:gcc -o hello hello.o 生成名为hello的可执行文件.  

【源码笔记】BlogEngine.Net 中的权限管理

BlogEngine.Net 是个功能点很全面的开源博客系统,容易安装和实现定制,开放接口支持TrackBack,可以定义主题配置数据源等等.可谓五脏俱全,这里先记录一下它基于Membership的权限管理(一般只说到角色就没了). Membership是.net2.0的时候就出来了,现在的最新版本是Identity(微软已经将这个Asp.net项目开源 https://github.com/aspnet/Identity ).权限管理就是处理用户.角色.和具体权限的关系.用户和角色是多对多的关

Linux软件安装:源码与Tarball

一.开放源码的软件安装与升级简介 1.开放源码.编译程序与执行文件 开放源码:就是程序代码(写满了程序代码的纯文本文件): 编译程序:将程序代码与函数库做链接,并翻译成机器看得懂的语言: 可执行文件:机器看得懂的二进制执行文件. 图示三者关系: 2.函数库 函数库:类似子程序的角色,可以被调用来执行的一段功能函数. 图示外部动态函数库的调用情况: ·Linux内核提供了相当多的函数库来给硬件开发者利用(系统调用): ·由上面的图示可知识,硬件开发者可通过调用内核函数库来开发出与硬件特性相关的产品

第22章 软件安装:源码与Tarball

开放源码的软件安装与升级简介 什么是开放源码.编译程序与可执行文件 开放源码:程序代码,写给人类看的程序语言 编译程序:将源码编译成机器能看得懂的语言 可执行文件:经过编译变成二进制程序后机器看得懂可以执行的文件 什么是函数库 类似子程序的角色,可以被调用来执行的一段功能函数 什么是make与configure 一套软件不仅仅有一个程序,而是一对程序代码文件,所以除了每个主程序和子程序均需要编译过程的命令外,还需要写上最终的链接程序.使用make命令,可以简化编译过程. (1)执行make时,会

CI框架源码阅读笔记3 全局函数Common.php

从本篇开始,将深入CI框架的内部,一步步去探索这个框架的实现.结构和设计. Common.php文件定义了一系列的全局函数(一般来说,全局函数具有最高的加载优先权,因此大多数的框架中BootStrap引导文件都会最先引入全局函数,以便于之后的处理工作). 打开Common.php中,第一行代码就非常诡异: if ( ! defined('BASEPATH')) exit('No direct script access allowed'); 上一篇(CI框架源码阅读笔记2 一切的入口 index

jquery源码之低调的回调函数队列--Callbacks

jQuery中有一个很实用的函数队列,可能我们很少用到,但他在jQuery内部却有着举足轻重的地位. 他就是Callbacks. jQuery作者用它构建了很多非常重要的模块.比如说$.Deferred. Callbacks 说白了就是个数组,里面存了很多函数对象.然而他真的 just so so么? 好吧,爱因斯坦也只是个人,但他真的仅仅是个普普通通的人吗?Callbacks也不是. 不说废话了,见源码. // String to Object options format cache var

[PHP源码阅读]array_pop和array_shift函数

上篇文章介绍了PHP添加元素到数组的函数,那么当然有从数组中删除元素.array_pop和array_shift只从数组的头或尾删除一个元素.经过阅读源码,发现这两个函数的实现都是调用了同一个函数--_phpi_pop来实现从数组中删除一个数组元素的功能.因此解读时将这两个函数一并讲了. 我在github上有对PHP源码更详细的注解.感兴趣的可以围观一下,给个star.PHP5.4源码注解.可以通过commit记录查看已添加的注解. 函数语法 array_pop mixed array_pop