从源码编译安装软件时,有3个步骤:
./configure
make
make install
根据《Linux下从源码编译安装软件中3个命令之间的关系》(http://www.linuxdiyf.com/linux/18175.html)可知,在这3个步骤中,运行configure脚本是比较重要的步骤,它产生的Makefile文件是接下来两个步骤的基础。
不像DPKG机制,APT-GET机制几乎不允许我们自定义安装参数,从源码编译安装机制赋予我们很大的自由来自定义安装参数,而这正是通过在运行configure脚本时来指定参数做到的。
每个configure脚本可配置参数都是不同的,具体可通过以下命令来查看:
./configure --help
由于不同configure脚本的可配置参数不同,因而接下来介绍的只是大部分configure脚本可使用的可配置参数,而不是所有configure脚本可使用的。configure脚本具有很多可配置参数,接下来主要介绍3类比较重要的可配置参数:指定安装到目录的可配置参数,指定编译链接选项的可配置参数和指定依赖查找路径的可配置参数。
1、指定安装到目录的可配置参数
通过"./configure --help"命令,可以发现configure脚本中关于安装到目录的配置如图1所示。
由图1可知,要自己指定安装到目录,只需要配置PREFIX,EPREFIX这2个环境变量,这些环境变量与configure脚本的可配置参数的对应关系如下:
--prefix PREFIX
--exec-prefix EPREFIX
另外再指定"--oldincludedir"参数即可。
2、指定编译链接选项的可配置参数
有时候需要自定义编译链接选项,比如非标准的.h文件目录,非标准的库文件目录等,这需要用到CFLAGS和LDFLAGS环境变量。
3、指定依赖查找路径的可配置参数
configure脚本会检查当前系统环境是否已安装所需的软件依赖,绝大多数configure脚本通过使用"pkg-config"命令去查找默认目录下是否存在相应的pc文件的方式来进行检查,可以通过"PKG_CONFIG_PATH"环境变量增加自己的非标准搜索目录。
注意,要使用"pkg-config"命令,首先得安装PKGCONFIG软件。
#!/bin/bash
INSTALLDIR="/home/dsl/bigdisk/testdisk/usr/local"
prefix=$INSTALLDIR
exec_prefix=$INSTALLDIR
oldincludedir=$INSTALLDIR/oldinclude
dependency_path=$INSTALLDIR/lib/pkgconfig
./configure --prefix=$prefix --exec-prefix=$exec_prefix --oldincludedir=$oldincludedir PKG_CONFIG_PATH=$dependency_path CFLAGS="-I$INSTALLDIR/include -I$INSTALLDIR/include/apr-1 -g -O2 -pthread -DLINUX -D_REENTRANT -D_GNU_SOURCE -D_LARGEFILE64_SOURCE" LDFLAGS="-L$INSTALLDIR/lib"