makefile文件 makefile 一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 makefile就像一个shell脚本一样,其中也可以执行操作系统的命令。
makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命令,比如Linux下GNU的make。可见,makefile都成为了一种在工程方面的编译方法。
RPM安装:(二进制格式)
源程序-->编译-->二进制格式
有些特性是编译选定的,如果编译未选定此特性,将无法使用;
rpm包的版本会落后于源码包,甚至落后很多;比如:bind-9.8.7, bind-9.7.2,可能会带来安全隐患,所以尽可能会选择源码格式的包
我们就会对软件包进行定制 (定制:手动编译安装)
make:项目管理工具(c,c++)
makefile:定义了make(gcc,g++)按何种次序去编译这些源文件中的源程序
automake-->makefiel.in :生成makefile文件
autoconf-->configure 给项目生成一个脚本(配置当前程序如何编译的程序)
make install /path/to/file将编译后的文件放在指定的路径下
编译安装的三步骤:
前提是:准备开发环境,开发库,开发工具
安装“ Development Tool”和“Development Libraries”
查看是否安装
我们拿到的软件通常是压缩格式的,需要解压
#tar /PATH/TO/PACKAGE_NAME 解压缩
./configure
--help:获取脚本的使用格式
--prefix=/prth/to/somewhere:指定安装路径
--sysconfdir=/PATH/TO/CONFFILE_PATH
配置文件路径。默认/etc,
功能:1、让用户选定编译特性;2、检查编译环境;
例:
# cd tegnine-1.4.2 切换到tegnine-1.4.2下,查看有一个脚本是configure
# ./configure --prefix=/usr/local/tengine --conf-path=/etc/tengine/tengine.conf
# make
# make install
# /usr/local/tengine/sbin/nginx
*注:
1、修改PATH环境变量,以能够识别此程序的二进制文件路径;
修改/etc/profile文件
在/etc/profile.d/目录建立一个以.sh为名称后缀的文件,在里面定义export PATH=$PATH:/path/to/somewhere
2、默认情况下,系统搜索库文件的路径/lib, /usr/lib; 要增添额外搜寻路径:
在/etc/ld.so.conf.d/中创建以.conf为后缀名的文件,而后把要增添的路径直接写至此文件中;
# ldconfig 通知系统重新搜寻库文件
-v: 显示重新搜寻库的过程
3、头文件:输出给系统
默认:/usr/include
增添头文件搜寻路径,使用链接进行:
/usr/local/tengine/include/ /usr/include/
两种方式:
ln -s /usr/local/tengine/include/* /usr/include/ 或
ln -s /usr/local/tengine/include /usr/include/tengine
4、man文件路径:安装在--prefix指定的目录下的man目录;/usr/share/man
1、man -m /PATH/TO/mAN_DIR COmmAND
2、在/etc/man.config中添加一条MANPATH