日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2025/4/5 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 超详细的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%免費軟件,在尊重用戶自由的意義上說是免費的?!康恼f法叫做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 --version4.2、移除默認安裝的git:yum remove git

三、自行下載安裝Git

最新git源碼下載地址:https://github.com/git/git/releaseshttps://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

總結

以上是生活随笔為你收集整理的超详细的CentOS7中安装Git,yum安装和自己编译安装的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。