关于./configure,make,make install

./configure 作用是检测安装平台的目标特征。比如它会检测安装平台是不是有CCGCC,并不是需要CCGCC,它是一个shell脚本。

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

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

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

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

如果在 make 过程中出现 error,此时需要记下错误代码(而不仅仅是最后一行),然后可以向开发者提交 bug report(在./configure --help 最末尾会有提交地址或是联系邮箱),或者是你的安装环境缺少了一些依赖库等,这些需要自己仔细研究错误代码。

make的作用是开始对源代码进行编译,以及一些功能的提供,这些功能由 Makefile 设置文件来提供,例如 make install 一般表示进行安装,make uninstall 是卸载,不加参数就是默认的进行源代码编译。

make Linux 开发套件里自动化编译的一个控制程序,它通过借助Makefile 里面编写的编译规范进行自动化的调用 gccld以及运行某些需要程序进行编译的程序。一般情况下,它所使用的Makefile 控制代码,由configure这个设置脚本根据给定的参数和系统环境生成。

3、make install

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

常见问题与回答:

Q1:CCgcc分别是什么?

A1:CCgcc的符号连接,gcc是编译器。

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

for example:
x86 gcc
mips64 gcc-mips64

当需要把x86下的源代码移植到mips64时,只需要将makefile CC=gc改成 CC=gcc-mips64 而不需要将所有出现gcc的地方都改成 gcc-mips64

Q2:make make install 中的make 是系统自带的命令还是可执行程序文件? make install 是不是可以认为install make的参数?

A2:install 不是make 的参数,而是在 Makefile 文件中有如 install : 的语句。如果用 make install,那么就执行install:后面的语句。

Q3:Makefile是什么东西?有什么用?怎么用?

A3:makefile 是用于自动编译和链接的,一个工程由很多文件组成,每一个文件的改变都会导致工程的重新链接,但并不是所有的文件都重新编译,makefile 能够记录 文件的信息,决定在链接的时候需要重新编译哪些文件!

unix 系统中,makefile是与 make 命令配合使用的。有了这个Makefile 文件,不论我们什么时候修改了源程序当中的文件,我们只需要执行 make 命令,编译器都只会去编译修改过的文件,其它文件无需改变。

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

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

Linux 下的 cc gcc 的符号链接,可以通过 ll /usr/bin/cc 简单查看。而编译时看到的控制台输出CC 则是一个指向gcc 的变量,该变量是make 程序的内建变量,就算你在Makefile 中没有CC= ,该变量也会存在,并默认指向gcc cc的符号链接和变量存在的意义在于源码的移植性,可以方便的用GCC来编译老的用cc 编译的unix软件,甚至连Makefile都不要改。而且也便于 linux 程序在unix 下编译。

参考来源:

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值