1、什么是开放源码、编译程序与和可执行文件? 程序的源代码时纯文本文档,通过编译器编译(gcc),利用已经存在的函数库,生成可执行文件(binary file)。编译过程中会生成目标文件(object file)为*.o! 2、什么时函数库? 类似子程序,可以被调用来执行的一段功能函数。用户运行程序是很多功能可以通过调用系统本身自带的函数库,可以简化编写量,并且更加安全。 3、什么是make和configure? make是一个可以一次编译大量源码的软件,当make运行时会找名为Makefile的文件,并根据Makefile文件记录的编译规则对目录中的源码文件编译。但是不同的计算机的系统是不同的所以为了软件在不同的系统上运行就需要不同的Makefile文件,通过检测程序(congfigure或者config)就可以自动的生成本系统下需要的Makefile文件。 检测程序需要的4点:适合编译的源码文件、软件(相关库或其他程序)、系统平台、内核的头定义文件(header include) 4、什么是Tarball软件 Tarball文件是用tar打包压缩过的源码文件包。通常有*.tar.gz或是*.tgz还有*.tar.bz2k,一般里面有: 源代码文件 检测程序文件(可能是config或configure文件) 本软件的简易说明和安装说明(INSTALL或README) 其中最重要的是INSTALL或README文件,安装前一定要认真阅读。 5、安装与升级软件 为什么要升级? 有两种升级方法: 直接用源码编译安装升级 直接用编译好的二进制程序安装升级 Red Hat系统用的rpm软件管理机制和yum在线更新模式,Debian系统用的dpkg软件管理机制和APT在线更新模式等都的使用第二种方法。 Tarball如何安装: 1、将Tarball由厂商的网页上下载下来 2、将Tarball解压缩,生成很多的源码文件 3、开始以gcc进行源码的编译(会生成目标文件) 4、然后以gcc进行函数库、主程序、子程序的链接,生成主要的二进制文件 5、将上述的二进制文件以及相关的配置文件安装到自己的主机上 上述步骤中的3、4步骤可以直接用make命令一次完成。 6、gcc的基本参数和功能 gcc 源文件:直接生成可执行文件(默认文件名为:a.out) gcc -c 源文件:生成源文件.o的目标文件 gcc -o 可执行文件 目标文件1.o 目标文件2.o....:把目标文件链接成可执行文件 gcc -O数字:可以进行文件优化,数字代表优化等级有(1 2 3)默认为等级2. gcc -Wall:产生更详细的编译过程信息。 gcc -l:在编译过程中加入某个函数库的意思,比如要加入libm.so这个动态函数库就可以用gcc -lm这个命令。其中lib与拓展名(.a或.so不需要写) gcc -L/path:可以加需要加入的函数库路径,如果函数库不在/lib和/usr/lib中就必须要指明路径。 gcc -I/path:后面加的路径是去搜索相关的include文件(也就是源文件前指定的头文件)的目录,默认的<stdio.h>放在/usr/include下面 7、makefile的基本语法与变量 目标(target):目标文件1 目标文件2.... <tar> gcc -o 欲新建的可执行文件 目标文件1 目标文件2 .... 注意: makefile中#表示批注 <tab>需要在命令行中的第一个字符 目标(target)与相关文件(就是目标文件)之间需要一个“ :”隔开 目标文件之间要用空格隔开 8、上面的目标(target)表示的是make后加的命令例如:main 、clear等使用时可以make main或者make clear 9、在makefile文件中可以使用变量。 变量与变量的内容用“ =”隔开 变量左边不可以有<tab> 变量与变量内容两边不可以有“ :” 习惯上变量最好时“ 大写字母” 运用变量时以${变量}或$(变量) shell中的环境变量可以被套用 命令行中也可以定义变量 10、环境变量的取用规则: 1、make命令行后面加的环境变量 2、makefile里面指定的环境变量 3、shell原本据有的环境变量 注:"$@"代表了目标(target) 11、Tarball的管理和建议 Tarball软件包安装所需的基础软件: 1、gcc或cc等C语言编译程序(compiler) 2、make及autoconfig等软件 3、Kernel提供的Library以及相关的include文件 yum groupinstall "Development Tools" yum groupinstall "X Software Development" 12、安装的基础操作: 1、取得源文件:将tarball文件在/usr/local/src目录下解压缩; 2、进入tarball解压出的目录,查看INSTALL或README文件 3、根据INSTALL/README的内容查看并且安装好一些相关的软件(有可能不需要) 4、建立makefile文件。(输入./configure或者./config) 5、编译:用make命令即可 6、安装:以make install命令一般在makefile文件中就有makeinstall的相关配置 所以一般的源码安装命令为: ./configure make clean make make install 13、把Tarball的原始数据解压缩到/usr/local/src中,最好不要按软件的默认安装,应该在/usr/local/下建立一个单独的目录,把软件的所需文件放在此目录下,按装完成后把“ /usr/local/软件名/bin”加入PATH中。/usr/local/软件名/man也要加入man page搜索路径中。这样有利于以后的软件的升级和删除等管理 14、用patch更新源码 patch -p数字<patch_file:p后面的数字(xx)数字是几就是现在的相对路径拿掉几个/的意思 patch -R<path_file:就可以还原了. 15、数据库管理: 什么是动态数据库(Dynamic)与静态数据库(Static)?他们对数据库升级有什么影响?编译行为有什么不同?独立执行的状态?发行版(distredution)的选择是什么? 16、ldconfig与/etc/ld.so.conf ldconfig作用是把/etc/ld.so.conf文件中记录的动态函数库加载到内存中这样在软件需要这些函数库中的文件时就比在硬盘中读取快捷。 首先,我们先在/etc/ld.so.conf里写下想要读入高速缓存动态函数库的目录 利用ldconfig把/etc/ld.so.conf的数据读入缓存中 同时也将数据记录一份在/etc/ld.so.cache文件中 ldconfig 【-f conf】conf是文件名即用conf作为libarary函数库的取得路径 【-C cache】用cache的文件名替代/etc/ld.so.cache作为缓存暂存的函数库资料 【-p】列出所有的函数库内容 17、ldd 『-vdr』『filename』:查看filename文件的动态函数库有哪些; -v:列出所以内容信息 -d:重新将数据有丢失的link点显示出来 -r:将ELF有关的错误内容显示出来 例如:ldd /usr/bin/passwd 18、检验软件的正确性 通过文件独特的指纹验证数据,因为每个文件的大小都不相同,所以如果一个文件被修改过,就必然有部分信息不一样!现在使用比较广泛的是MD5与SHA1加密机制; md5sum/sha1sum [-bct] filename md5sum/sha1sum [--status|--warn] --check filename -b :使用二进制读取方式,默认为Windows/Dos文件的读取方式 -c:检验文件指纹 -t:以文本类型来读取文件指纹 例如:md5sum Centos-5.3-i386-netinstall.iso得到的md5sum指纹码可以与官网上的指纹码对比验证。sha1sum用法也一样。