一、基本概念:
1.Tarball:Tarball文件是将软件的所有源码文件先以tar打包,然后再以压缩技术来压缩,最常见的就是以gzip来压缩了。扩展名一般为*.tar.gz或*.tgz,有的是以bzip2压缩的扩展名为*.tar.bz2。
所以说Tarball就是一个软件包,解压后包含:①源代码文件 ②检测程序文件(configure或config) ③软件介绍和安装说明(INSTALL或README)
2.源程序变成软件的过程:①编码源代码文件 ②gcc编译器将源代码编译生成目标文件*.o ③gcc编译器将多个目标文件和所需要的外部库文件等资源文件链接制作成二进制可执行文件 ③执行可执行文件安装成软件即可使用
3.什么是configure与make?
configure是软件开发商编写的检测程序,用来检测用户操作环境以及该操作环境是否有软件开发商所需要的其他功能,主要监测数据有以下:
①是否有合适的编译程序可以编译本软件的程序代码
②是否已经存在本软件所需要的函数或其他需要的相关软件
③操作系统是否适合本软件。包括Linux的内核版本
④内核的头定义文件(header include)是否存在(驱动程序必须要的检测)
configure或config检测程序检测完毕后会生成makefile规则文件,makefile里面记录了源码如何编译的详细信息,
make是一个程序,运用make的简单命令可以实现需要大量编译命令才能实现的功能,即可以简化编译过程里面所执行的命令,
make程序会自动去找makefile文件,读取里面的内容并执行操作。
make会自动识别源码是否是最新的而是否需要自动更新操作(直接编译链接成新的可执行文件)
二、gcc编译常用命令
1.不带参数,直接编译链接成二进制文件 a.out
# gcc hello.c
2.仅编译成目标文件,不制作链接,*.o
# gcc -c hello.c
3.仅编译成目标文件并且优化
# gcc -O hello.c -c
4.将目标文件链接成可执行文件,小写字母o后边这个hello1是自定义可执行二进制文件名
# gcc -o hello1 hello.o
5.将多个目标文件链接成可执行文件
# gcc -o test test1.o test2.o
6.加入额外函数库链接,C源代码中使用了sin函数
# gcc sin.c -lm -L/lib -L/usr/lib
其中:-l:是加入某个库函数(library)的意思
m:则是libm.so这个函数库,其中,lib与扩展名(.a或.so)不需要写。
所以-lm就是指加入函数库libm.so或libm.a的意思
-L:L指后边接的是函数库所在的路径,不写就是用默认的路径/lib 与/usr/lib
-I:I后边接的是include了的库路径,不写就是使用默认的路径/usr/include/stdio.h