超详细的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來簡單察看
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 2月 25 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工作原理: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工具,如果沒有請自行百度安裝:
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文件
3.2 將configure.scan文件重命名為configure.in文件
# mv configure.scan configure.in # ls autoscan.log configure.in hello.c3.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.c3.5 手動創建并編輯如下的Makefile.am文件
新建Makefile.am文件,并輸入如下內容,命令:
automake會根據你寫的 Makefile.am來自動生成Makefile.in.
3.6 執行automake --add-missing命令,產生Makefile.in文件,使用選項”–add-missing”可以讓automake自動添加一些必需的腳本文件。
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.am3.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.o3.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-MakeMaker4、查看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.gz2、解壓:此處解壓到/usr/local/src目錄下
tar -zxvf git-2.21.0.tar.gz -C /usr/local/src3、安裝
3.1、進入解壓后的git目錄:cd /usr/local/src/git-2.21.0.tar.gz
Git 的工作需要調用 curl,zlib,openssl,expat,libiconv 等庫的代碼,所以需要先安裝這些依賴工具。安裝編譯依賴
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
移動到根目錄輸入,顯示版本就沒問題啦!
總結
以上是生活随笔為你收集整理的超详细的CentOS7中安装Git,yum安装和自己编译安装的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: falsk-sqlalchemy 连接数
- 下一篇: 俞敏洪、王金战、刘嘉、丁延庆:AI时代,