相关概念

  • API (application programming interface)

  • POSIX (portable OS)

  • 代码打包过程:源代码-->预处理-->编译-->汇编-->链接

  • 编译分为:共享编译(.so)和静态编译

  • ABI (application binary interface)

  • 系统级开发:C C++

  • 应用及开发:JAVA PHP Python

  • 二进制应用程序的组成部分:二进制文件、库文件、配置文件、帮助文件

程序包管理器

  • 作用:提供方便快捷的程序包的安装、卸载、查询、升级、校验等管理操作。

  • Redhat的包管理器: rpm (Redhat Package Manager/RPM is Package Manager)

包命名规则:

  • 源代码命名规则:包名-版本.tar.gz

  • RPM包命名规则:包名-版本-说明.rpm

版本包含:主版本号.次版本号.程序发行版本

说明包含:rpm包发行版本.系统版本.平台类型

举例:zlib-1.2.7-17.el7.x86_64

zlib是包名 1.1.7是程序版本 17是包版本 el7是系统版本 x86是平台类型

  • 拆分程序包命名规则:

主包命名规则:主包名-version-arch.rpm

子包命名规则:主包名-子包名-version-arch.rpm

如:zlib-1.2.7-17.el7.x86_64 和 zlib-devel-1.2.7-17.el7.x86_64

程序包管理方式

  • rpm

  • yum

yum是什么:rpm包管理器的前端工具。

yum的作用:自动解决程序直接的依赖关系。

rpm相关命令

安装: rpm -i 包名

升级: rpm -U 包名 或者 rpm -F 包名

查询: rpm -q {包名|文件名}

卸载: rpm -e 包名

yum相关命令

安装:yum install 包名

升级:yum update 包名

查询:yum list | grep 包名

卸载:yum remove 包名

  • yum配置文件

全局配置文件:/etc/yum.conf

仓库配置文件:/etc/yum.repos.d/*.repo

  • 库配置文件格式

#仓库ID[base]#仓库名称name=CentOS-$releasever - Base - mirrors.aliyun.com#仓库地址baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/ 
#是否启用nabled={1|0}#是否检查包完整性gpgcheck={1|0}#Key地址gpgkey=Key地址  #仓库地址为多个时,如何选择failovermethod={roundrobin|priority}

查看二进制程序所依赖的库文件

  • 命令:ldd 二进制文件

  • 举例:查看ls这个命令都依赖哪些库文件

[root@localhost ~]# ldd /usr/bin/ls linux-vdso.so.1 => (0x00007fffc5b49000) libselinux.so.1 => /lib64/libselinux.so.1 (0x00007fd0969ab000) libcap.so.2 => /lib64/libcap.so.2 (0x00007fd0967a6000) libacl.so.1 => /lib64/libacl.so.1 (0x00007fd09659c000) libc.so.6 => /lib64/libc.so.6 (0x00007fd0961db000) libpcre.so.1 => /lib64/libpcre.so.1 (0x00007fd095f79000) libdl.so.2 => /lib64/libdl.so.2 (0x00007fd095d74000) /lib64/ld-linux-x86-64.so.2 (0x00007fd096bda000) libattr.so.1 => /lib64/libattr.so.1 (0x00007fd095b6f000) libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fd095953000)

管理及查看本机装载的库文件

  • 命令:ldconfig

  • 举例:显示本机已经缓存的所有可用库文件以及映射关系

ldconfig -p

  • 配置文件:/etc/ld.so.conf /etc/ld.so.conf.d/*.conf

  • 缓存文件:/etc/ld.so.cache