超详细的CentOS7中安装Git,yum安装和自己编译安装

预备知识很长,请耐心看,对后面安装过程的理解及其对linux 的理解都很有帮助

一、预备知识

1)什么是自由软件运动?

自由软件运动致力于通过自由软件使计算机用户获得自由权利。自由软件的用户可以自主控制自己的计算。非自由软件使用户受制于软件开发者。

2)GNU

GNU是一个自由软件操作系统—就是说,它尊重其使用者的自由。自由软件意味着使用者有运行、复制、发布、研究、修改和改进该软件的自由。GNU是一个类Unix操作系统。它是由多个应用程序、系统库、开发工具乃至游戏构成的程序集合。GNU的开发始于1984年1月,称为GNU工程。GNU是一个类Unix操作系统。它是由多个应用程序、系统库、开发工具乃至游戏构成的程序集合。

3)cc、gcc的介绍和区别概括

老的unix系统的CC程序叫做C Compiler。但GCC这个名字按GNU【GNU编译器集合包括C, C ++,Objective-C,Fortran,Ada,Go和D的前端 ,以及这些语言的库(libstdc ++等)。GCC最初是作为GNU操作系统的编译器编写的。GNU系统开发为100%免费软件,在尊重用户自由的意义上说是免费的。】的说法叫做GNU Compiler Collection。因为gcc包含很多编译器(C, C++, Objective-C, Ada, Fortran,Java)。所以它们是不一样的,一个是一个古老的C编译器,一个是GNU的编译器的集合。当你调用gcc时不一定是调用的C/C++编译器,是gcc根据文件扩展名自动识别并调用对应的编译器,具体可查阅$man gcc
linux下的cc是gcc的符号链接。可以通过$ls –l /usr/bin/cc来简单察看

[root@Hadoop ~]# which cc
/usr/bin/cc
[root@Hadoop ~]# which gcc
/usr/bin/gcc

cc是Unix下的,是收费的,可不向Linux那样可以那来随便用,所以Linux下是没有cc的。那么问题来了,为啥我们在linux下能查到cc呢(如上查询结果)?如果我的c/c++项目是在Unix下编写的,在写makefile文件时自然地用了cc,当将其放到Linux下这无法make了,必须将其中的cc全部修改成gcc。这太麻烦了哈,所以,Linux这想了这么一个方便的解决方案:不修改makefile,继续使用cc,这个cc是个“冒牌货”,它实际指向gcc。

4)make命令与Makefile文件

[root@Hadoop git-2.21.0]#  ls -l |grep Makefile
-rw-rw-r--.  1 root   root  98415 225 2019 Makefile

[root@Hadoop git-2.21.0]# which make
/usr/bin/make

可以看出make是一个命令,Makefile是一个文件,具体看下面

无论是在Linux还是在Unix环境中,make都是一个非常重要的编译命令。不管是自己进行项目开发还是安装应用软件,我们都经常要用到make或make install(make和make install区别看下方)。利用make工具,我们可以将大型的开发项目分解成为多个更易于管理的模块,对于一个包括几百个源文件的应用程序,使用make和Makefile文件就可以简洁明快地理顺各个源文件之间纷繁复杂的相互关系。而且如此多的源文件,如果每次都要键入gcc命令进行编译的话,那对程序员来说简直就是一场灾难。


① 而make工具则可自动完成编译工作,并且可以只对程序员在上次编译后修改过的部分进行编译。
② 事实上,只有make命令还是不够的,前面说过还必用须makefile告诉它要做什么以及怎么做才行,对于程序开发而言,就是告诉make命令应用程序的组织情况。
③ Makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,Makefile中纪录有文件的信息,在 make时会决定在链接的时候需要重新编译哪些文件。因为makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。makefile 带来的好处就是“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。
④ 我们现在对makefile的位置和数量简单说一下。一般情况下,makefile会跟项目的源文件放在同一个目录中。另外,系统中可以有多个makefile,一般说来一个项目使用一个makefile就可以了;
因此,有效的利用make和makefile工具可以大大提高项目开发的效率。同时掌握make和makefile之后,您也不会再面对着Linux下的应用软件手足无措了。

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

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

预备知识及make工作原理,及Makefile依赖可参考:
make工作原理:https://blog.csdn.net/qq_22182835/article/details/89467386
Makefile依赖
https://www.cnblogs.com/nosadness/p/5136652.html

5)source、sh、bash、./都是用来执行脚本的命令

6)automake autoconf 使用详解

autoconf命令用途:帮我们自动生成Makefile文件
我们直接从helloworld.c实例入手讲解:
  下面的 过程如果简单地说来就是 :
  新建三个文件:
   helloworld.c
   configure.in
   Makefile.am
  然后执行:
aclocal; autoconf; automake --add-missing; ./configure; make; ./helloworld
  就可以看到Makefile被产生出来,而且可以将helloworld.c编译通过.

很简单吧,几条命令就可以做出一个符合惯例的 Makefile,

现在 开始介绍详细的 过程:
先用命令查看是否有autoconf工具和automake工具,如果没有请自行百度安装:

# which autoconf
/usr/bin/autoconf
# which automake
/usr/bin/automake

1.建目录

在 你的 工作目录下建一个helloworld目录,我们用它来存放helloworld程序及相关文件,如在 /home/my/build下:

$ mkdir helloword
$ cd helloworld
  2. hello.c

然后用你自己最喜欢的 编辑器写一个hello.c文件,如命令:vi hello.c.使用下面的 代码作为hello.c的 内容.

#include <stdio.h>
int main(){
printf("%s", 'hello world!");
return 0;
}
  完成后保存退出.
  现在 在 helloworld目录下就应该有一个你自己写的 hello.c了.
  
  3.生成configure
3.1 运行autoscan命令产生configure.scan文件

# autoscan
# ls
autoscan.log  configure.scan  hello.c

3.2 将configure.scan文件重命名为configure.in文件

# mv configure.scan configure.in
# ls
autoscan.log  configure.in  hello.c

3.3 修改configure.in里面的内容如下:

# -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.
AC_INIT(hello.c)
AM_INIT_AUTOMAKE(hello, 1.0)
# Checks for programs.
AC_PROG_CC
# Checks for libraries.
# Checks for header files.
# Checks for typedefs, structures, and compiler characteristics.
# Checks for library functions.
AC_OUTPUT(Makefile)

3.4 然后执行命令aclocal和autoconf,分别会产生aclocal.m4及configure两个文件:

# aclocal
aclocal: warning: autoconf input should be named 'configure.ac', not 'configure.in'
# ls
aclocal.m4  autom4te.cache  autoscan.log  configure.in  hello.c
# autoconf
# ls
aclocal.m4  autom4te.cache  autoscan.log  configure  configure.in  hello.c

3.5 手动创建并编辑如下的Makefile.am文件
新建Makefile.am文件,并输入如下内容,命令:

$ vi Makefile.am
输入的内容:
AUTOMAKE_OPTIONS=foreign
bin_PROGRAMS=hello
hello_SOURCES=hello.c

automake会根据你写的 Makefile.am来自动生成Makefile.in.
  
3.6 执行automake --add-missing命令,产生Makefile.in文件,使用选项”–add-missing”可以让automake自动添加一些必需的脚本文件。

# automake --add-missing
automake: warning: autoconf input should be named 'configure.ac', not 'configure.in'
configure.in:6: warning: AM_INIT_AUTOMAKE: two- and three-arguments forms are deprecated.  For more info, see:
configure.in:6: http://www.gnu.org/software/automake/manual/automake.html#Modernize-AM_005fINIT_005fAUTOMAKE-invocation
configure.in:6: installing './install-sh'
configure.in:6: installing './missing'
Makefile.am: installing './depcomp'
automake: warning: autoconf input should be named 'configure.ac', not 'configure.in'
# ls
aclocal.m4      autoscan.log  configure.in  hello.c     Makefile.am  missing
autom4te.cache  configure     depcomp       install-sh  Makefile.in

3.7 最后执行./configure命令,自动产生Makefile文件

#./configure
# ls
aclocal.m4      config.log     configure.in  install-sh   Makefile.in
autom4te.cache  config.status  depcomp       Makefile     missing
autoscan.log    configure      hello.c       Makefile.am

3.8 使用Makefile编译源代码:

# make
gcc -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\" -DPACKAGE=\"hello.c\" -DVERSION=\"1.0\" -I.     -g -O2 -MT hello.o -MD -MP -MF .deps/hello.Tpo -c -o hello.o hello.c
mv -f .deps/hello.Tpo .deps/hello.Po
gcc  -g -O2   -o hello hello.o

[root@Hadoop test]# ls -l |grep hello
-rwxr-xr-x. 1 root root  10953 12月 28 14:54 hello
-rw-r--r--. 1 root root     65 12月 28 14:09 hello.c
-rw-r--r--. 1 root root   5960 12月 28 14:54 hello.o

3.9 运行hello

# ./hello
hello world!

具体内容参考:https://www.cnblogs.com/liujx2019/p/10310064.html

7)configure就是6)过程中生成的脚本文件

8)为什么我安装的时候要先./configure,然后make,然后make install呢?

1:./configure 是软件的组态设置文件 产生对应平台的Makefile。你可以通过在 configure 后加上参数来对安装进行控制,比如代码:./configure –prefix=/usr 意思是将该软件安装在 /usr 下面,执行文件就会安装在 /usr/bin (而不是默认的 /usr/local/bin),资源文件就会安装在 /usr/share(而不是默认的/usr/local/share)。

2:make 根据Makefile的内容 编译出符合平台的可执行文件

3:make install 安装编译成功的软件

4:make clean清除编译成功的obj and binary

二、可以使用yum进行安装

1、安装git:yum install git

2、查看yum源仓库Git信息:yum info git

3、安装依赖库:yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel

yum install gcc-c++ perl-ExtUtils-MakeMaker

4、查看git版本,如果默认安装的版本过低,移除默认安装的git

  4.1、查看版本信息:git  --version

  4.2、移除默认安装的git:yum remove git

三、自行下载安装Git

   最新git源码下载地址:

   https://github.com/git/git/releases

   https://www.kernel.org/pub/software/scm/git/

1、下载

  1.1、用wegt命令进行下载:wget -O /tmp/git-2.21.0.tar.gz https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.21.0.tar.gz

2、解压:此处解压到/usr/local/src目录下

 tar -zxvf git-2.21.0.tar.gz -C /usr/local/src

3、安装

3.1、进入解压后的git目录:cd /usr/local/src/git-2.21.0.tar.gz
Git 的工作需要调用 curl,zlib,openssl,expat,libiconv 等库的代码,所以需要先安装这些依赖工具。安装编译依赖

yum install -y curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker

3.3、配置目录,设置安装路径:# ./configure --prefix=/usr/local/git

3.4、编译 # make

3.5、安装# make install

4、 配置环境变量

vim /etc/profile

在文件末尾输入以下内容:

# GIT_HOME
GIT_HOME=/usr/local/git
export PATH=$PATH:$GIT_HOME/bin

#刷新


source /etc/profile

在这里插入图片描述
移动到根目录输入,显示版本就没问题啦!

[root@CentOS7BAK /]# git --version
git version 1.8.3.1
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值