文章目录
一. 软件运行环境
软件运行和编译
ABI:二级制程序
Windows与Linux不兼容
ELF(Executable and Linkable Format)
PE(Portable Executable)
库级别的虚拟化:
虚拟化: 在linux上安装一个WINE那么windows下面的软件就可以在linux上面运行
Windows: Cygwin
API:Application Programming Interface
POSIX:Portable OS
程序源代码 --> 预处理 --> 编译 --> 汇编 --> 链接
静态编译:.a
动态编译:.so
so共享库 用ldd /bin/cat
(等命令)查看
静态和动态链接
链接主要作用是把各个模块之间相互引用的部分处理好,使得各个模块之间能够正确地衔接,分为静态链接和动态链接
静态链接
把程序对应的依赖库复制一份到包
libxxx.a
嵌入程序包
需重新编译
占用较多空间,迁移容易
动态链接
只把依赖加做一个动态链接
libxxx.so
连接指向
占用较少空间,升级方便
二. 软件包基础
包的组成:
二进制文件、库文件、配置文件、帮助文件
程序包管理器:
debian: deb文件, dpkg包管理器
redhat: rpm文件, rpm包管理器
rpm:Redhat Package Manager
RPM Package Manager
源码包
可以定制功能 但比较麻烦
·什么是源码包?有什么特点?
1.源码包,指的是程序员写的原始的程序代码文件,不能够直接在计算机上运行
2.源码包,需要进行编译,编程二进制包,才可安装使用
3.源码包,一般可以在任何的计算机上安装使用
4.源码包,命名方式一般为:
·软件包名.tar.gz
·软件包名.tar.bz2
·软件包名.tar.xz
·软件包名.zip