Linu上面的软件几乎都经过GPL授权, 所以每个软件几乎均提供源代码, 并且你可以自行修改该程序代码, 以符合你个人的需求!
1. 什么是开放源码, 编译程序与可执行文件
写完的程序就是所谓的源代码, 这个程序代码文件其实就是一个纯文本文件, 再来就是把这个文件"编译"成操作系统看的懂得二进制文件(Linux上真正识别的可执行文件其实是二进制文件)
在编译的过程中还会生成目标文件(Object file), 这些文件是以 *.o 的扩展名形式存在的
file /bin/bash
/bin/bash: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped
#如果是二进制程序且可执行时, 它就会显示可执行文件类(ELF 64-bit LSB executable), 同时会说明是否使用共享库(shared libs)
2. 什么是函数库
类似子程序的角色, 可以被调用来执行一段功能函数
3. 什么是make与configure
make: 简化编译过程
当进行make时, make会在当前的目录下搜索Makefile(or makefile)文件, 而Makefile里面则是记录了源码如何编译的详细信息. make会自动判别源码是否经过变动而自动更新执行文件.
configure (or config): 检测用户的操作环境, 以下为检测内容:
- 是否有合适的编译程序编译本软件的程序代码
- 是否已存在本软件所需的函数库或其他相关软件
- 操作系统平台是否适合本软件, 包括Linux的内核版本
- 内核的头定义文件(header include)是否尊在(驱动程序必要的检测)
你真正需要做的事情只有两个:
- 1.执行configure来新建Makefile
- 2.再以make调用所需要的数据来进行编译
4. 什么是Tarball的软件
tarball文件一般的扩展名就会写成 *.tar.gz 或者简写为 *.tgz, tarball是一个软件包, 你将它解压后, 通常有如下文件:
- 源代码文件
- 检测程序文件(configure or config)
- 本软件的简易说明与安装说明(INSTALL or README)
5. 如何安装与升级软件
一个tarball软件是如何安装的? 基本流程如下:
- 1.将Tarball由厂商的网页下载
- 2.解压生成源码文件
- 3.开始以gcc进行源码编译(会生成目标文件)
- 4.以gcc进行函数库, 主程序, 子程序的链接, 以形成主要的二进制文件
- 5.将上述的二进制文件以及相关的配置文件安装到自己的主机上
使用传统程序语言进行编译的简单范例
(编译, 参数, 链接)
#仅将源码编译成目标文件, 并不制作链接等功能
gcc -c hello.c #会自动生成hello.o这个文件, 但不会生成可执行文件
#在编译的时候, 依据操作环境给与优化执行速度
gcc -O -c hello.c #会自动生成hello.o文件并进行优化
#在制作二进制文件的同时, 将链接的函数库与相关的路径写入
gcc sin.c -lm -L/lib -L/usr/lib -I/usr/include
#这个命令最终生成可执行的二进制文件
#-lm指的是libm.so或libm.a这个函数库文件, 其中lib与.so均不用写
#-L后面接的路径是上面那个函数库的搜索目录
#-I后面接的路径是源码内的include文件所在目录
#将编译的结果输出成某个特定的文件名
gcc -o hello hello.c #-o后面接的是生成的二进制文件的文件名
#在编译时输出见多的说明信息
gcc -o hello hello.c -Wall
#通常称-Wall或-O这些非必要的参数为标志(FLAGS), 因为我们使用的是C程序, 所以有时也会简称这些标识为CFLAGS
用make进行宏编译
本文基于<鸟哥的Linux私房菜>, 归纳整理, 在此致谢鸟哥.
网友评论