java中的接口是类吗
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小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~