Linux编译安装中configure、make和make install各自的作用

./configure是用来检测你的安装平台的目标特征的。比如它会检测你是不是有CC或GCC,并不是需要CC或GCC,它是个shell脚本。

make是用来编译的,它从Makefile中读取指令,然后编译。

make install是用来安装的,它也从Makefile中读取指令,安装到指定的位置。

AUTOMAKE和AUTOCONF是非常有用的用来发布C程序的东西。

1、configure

这一步一般用来生成 Makefile,为下一步的编译做准备,你可以通过在 configure 后加上参数来对安装进行控制,比如代码:

./configure --prefix=/usr

上面的意思是将该软件安装在 /usr 下面,执行文件就会安装在 /usr/bin (而不是默认的 /usr/local/bin),资源文件就会安装在 /usr/share(而不是默认的/usr/local/share)。

同时一些软件的配置文件你可以通过指定 --sys-config= 参数进行设定。有一些软件还可以加上 --with、--enable、--without、--disable 等等参数对编译加以控制,你可以通过允许 ./configure --help 察看详细的说明帮助。

2、make

这一步就是编译,大多数的源代码包都经过这一步进行编译(当然有些perl或python编写的软件需要调用perl或python来进行编译)。

如果 在 make 过程中出现 error ,你就要记下错误代码(注意不仅仅是最后一行),然后你可以向开发者提交 bugreport(一般在 INSTALL 里有提交地址),或者你的系统少了一些依赖库等,这些需要自己仔细研究错误代码。

3、make install

这条命令来进行安装(当然有些软件需要先运行 make check 或 make test来进行一些测试),这一步一般需要你有 root 权限(因为要向系统写入文件)


常见问题及解答(Q&A):

Q1: 安装原码程序时,都要执行三步:

./configure
make
make install

Q2:cc和gcc又是什么?我在用./configure时,它老说我没有cc,无法进行安装,怎么才能有cc?

A2:CC是gcc的连接,gcc是编译器,你安装的时候大概是没有选择开发工具。你自己到光盘上找一下gcc* 吧.装上就行了。或者yum -y groupinstall "Development Tools" 自动安装基本开发工具。

CC是makefile里用来定义编译器的,是为了方便代码移植而设定,因为不同的平台可能用到不同的编译器

Linux CC与Linux GCC的区别概括介绍:

从名字上看,老的unix系统的CC程序叫做C Compiler。但GCC这个名字按GNU的说法叫做Gnu Compiler Collection。因为gcc包含很多编译器(C, C++, Objective-C, Ada, Fortran,and   Java)。所以它们是不一样的,一个是一个古老的C编译器,一个是编译器的GNU的编译器的集合(Gcc里的C编译器比CC强大太多了,所以你没必要用CC)。当你调用gcc时不一定是调用的C/C++编译器,是gcc根据文件扩展名自动识别并调用对应的编译器,具体可查阅$man gcc。

补充一点如果运行 ./Configure 遇到了个问题

/lib/cpp fails sanity check的解决方法
  在某些软件的时候,运行./configure 会报错,错误提示为:
  configure: error: C++ preprocessor “/lib/cpp” sanity check
  check See `config.log’ for more details
解决办法:出现该情况是由于c++编译器的相关package没有安装,在终端上执行:
  $ sudo yum install glibc-headers gcc-c++

猜你喜欢

转载自blog.csdn.net/f110300641/article/details/84204442