27、软件包管理

网友投稿 271 2022-11-06


27、软件包管理

编译命令gcc

源代码要想能够在机器上执行,需要进行编译,编译的过程如下示例:

c语言源代码-预处理器(cpp)-编译器(ccl)-汇编器(as)-链接器-输出可执行二进制文件

预处理:删除注释、定义;添加行号和标识。保理编译器直连等

编译(compiling):分析语法并优化,生成汇编代码

汇编(assembling):将代码转为可执行的命令

链接(linking):通过调用ld来链接程序需要的一大堆目标文件及所依赖的库文件,最后输出可执行文件

gcc命令执行编译:

预处理,生成.i文件  gcc -E hello.c -o hello.i

编译,生成.s文件  gcc -S hello.i -o hello.s

汇编,生成.o文件  gcc -C hello.s -o hello.o

链接,生成可执行文件 gcc hello.o -o hello

可以直接一步编译:gcc hello.c -o hello

链接命令ldd

链接主要作用是将各个模块之间相互引用,可分为静态链接和动态链接,静态链接是将所有包打包到一起,这种编译出来的文件很大,动态链接是使用链接指向,编译出文件占用相对少,目前用的较多是动态链接

可以使用ldd命令查看二级制文件所依赖的库文件

格式:ldd /pathto/binary_file

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

加载配置文件中指定库文件 ldconfig

显示本机已缓存所有可用库文件及映射关系 /sbin/ldconfig -p

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

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

库文件丢失了导致命令无法使用?

修复步骤

挂载镜像-开机以cd/DVD Iso进行启动-选择Rescue  a  CentOS Linux  system-选择continue-将光盘下的libc.so.6文件复制到虚拟机对应文件里(光盘下的文件默认被挂载在/mnt/sysimage下,相当于根目录)然后输入exit退出,等待。

软件包

软件包中主要有以下几种文件

二进制文件  库文件   配置文件  帮助文件

可以利用cpio查看包文件列表

rpm2cpio 包文件 | cpio -itv 预览包内文件

rpm2cpio 包文件 | cpio -id "*.conf"释放包内文件

程序包管理器

主流程序包管理器  redhat:rpm文件、rpm包管理器        debian:deb文件、dpkg包管理器

rpm包文件命名:

包的分类:

applicataion-version-arch.rpm 主包

applicataion-devel-version-arch.rpm 子包

applicataion-utils-version-arch.rpm 其他包

applicataion-libs-version-arch.rpm 其他包

包的依赖:

包之间可能存在依赖关系,比如安装A包时需要提前安装B包等

程序包管理器相关文件:

1、包文件组成:元数据、脚本、包内文件等

2、数据库(公共):/var/lib/rpm  等同于windows的控制面板

程序包名称和版本、依赖关系、功能说明、安装路径等信息

注:如果该数据库删除后,则无法安装卸载程序


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:接口调用(接口调用是什么意思)
下一篇:MAC 安装python3
相关文章

 发表评论

暂时没有评论,来抢沙发吧~