超详细的CentOS7中安装Git,yum安装和自己编译安装
預(yù)備知識(shí)很長(zhǎng),請(qǐng)耐心看,對(duì)后面安裝過(guò)程的理解及其對(duì)linux 的理解都很有幫助
一、預(yù)備知識(shí)
1)什么是自由軟件運(yùn)動(dòng)?
自由軟件運(yùn)動(dòng)致力于通過(guò)自由軟件使計(jì)算機(jī)用戶獲得自由權(quán)利。自由軟件的用戶可以自主控制自己的計(jì)算。非自由軟件使用戶受制于軟件開發(fā)者。
2)GNU
GNU是一個(gè)自由軟件操作系統(tǒng)—就是說(shuō),它尊重其使用者的自由。自由軟件意味著使用者有運(yùn)行、復(fù)制、發(fā)布、研究、修改和改進(jìn)該軟件的自由。GNU是一個(gè)類Unix操作系統(tǒng)。它是由多個(gè)應(yīng)用程序、系統(tǒng)庫(kù)、開發(fā)工具乃至游戲構(gòu)成的程序集合。GNU的開發(fā)始于1984年1月,稱為GNU工程。GNU是一個(gè)類Unix操作系統(tǒng)。它是由多個(gè)應(yīng)用程序、系統(tǒng)庫(kù)、開發(fā)工具乃至游戲構(gòu)成的程序集合。
3)cc、gcc的介紹和區(qū)別概括
老的unix系統(tǒng)的CC程序叫做C Compiler。但GCC這個(gè)名字按GNU【GNU編譯器集合包括C, C ++,Objective-C,Fortran,Ada,Go和D的前端 ,以及這些語(yǔ)言的庫(kù)(libstdc ++等)。GCC最初是作為GNU操作系統(tǒng)的編譯器編寫的。GNU系統(tǒng)開發(fā)為100%免費(fèi)軟件,在尊重用戶自由的意義上說(shuō)是免費(fèi)的。】的說(shuō)法叫做GNU Compiler Collection。因?yàn)間cc包含很多編譯器(C, C++, Objective-C, Ada, Fortran,Java)。所以它們是不一樣的,一個(gè)是一個(gè)古老的C編譯器,一個(gè)是GNU的編譯器的集合。當(dāng)你調(diào)用gcc時(shí)不一定是調(diào)用的C/C++編譯器,是gcc根據(jù)文件擴(kuò)展名自動(dòng)識(shí)別并調(diào)用對(duì)應(yīng)的編譯器,具體可查閱$man gcc。
linux下的cc是gcc的符號(hào)鏈接。可以通過(guò)$ls –l /usr/bin/cc來(lái)簡(jiǎn)單察看
cc是Unix下的,是收費(fèi)的,可不向Linux那樣可以那來(lái)隨便用,所以Linux下是沒(méi)有cc的。那么問(wèn)題來(lái)了,為啥我們?cè)趌inux下能查到cc呢(如上查詢結(jié)果)?如果我的c/c++項(xiàng)目是在Unix下編寫的,在寫makefile文件時(shí)自然地用了cc,當(dāng)將其放到Linux下這無(wú)法make了,必須將其中的cc全部修改成gcc。這太麻煩了哈,所以,Linux這想了這么一個(gè)方便的解決方案:不修改makefile,繼續(xù)使用cc,這個(gè)cc是個(gè)“冒牌貨”,它實(shí)際指向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是一個(gè)命令,Makefile是一個(gè)文件,具體看下面
無(wú)論是在Linux還是在Unix環(huán)境中,make都是一個(gè)非常重要的編譯命令。不管是自己進(jìn)行項(xiàng)目開發(fā)還是安裝應(yīng)用軟件,我們都經(jīng)常要用到make或make install(make和make install區(qū)別看下方)。利用make工具,我們可以將大型的開發(fā)項(xiàng)目分解成為多個(gè)更易于管理的模塊,對(duì)于一個(gè)包括幾百個(gè)源文件的應(yīng)用程序,使用make和Makefile文件就可以簡(jiǎn)潔明快地理順各個(gè)源文件之間紛繁復(fù)雜的相互關(guān)系。而且如此多的源文件,如果每次都要鍵入gcc命令進(jìn)行編譯的話,那對(duì)程序員來(lái)說(shuō)簡(jiǎn)直就是一場(chǎng)災(zāi)難。
① 而make工具則可自動(dòng)完成編譯工作,并且可以只對(duì)程序員在上次編譯后修改過(guò)的部分進(jìn)行編譯。
② 事實(shí)上,只有make命令還是不夠的,前面說(shuō)過(guò)還必用須makefile告訴它要做什么以及怎么做才行,對(duì)于程序開發(fā)而言,就是告訴make命令應(yīng)用程序的組織情況。
③ Makefile定義了一系列的規(guī)則來(lái)指定,哪些文件需要先編譯,哪些文件需要后編譯,哪些文件需要重新編譯,甚至于進(jìn)行更復(fù)雜的功能操作,Makefile中紀(jì)錄有文件的信息,在 make時(shí)會(huì)決定在鏈接的時(shí)候需要重新編譯哪些文件。因?yàn)閙akefile就像一個(gè)Shell腳本一樣,其中也可以執(zhí)行操作系統(tǒng)的命令。makefile 帶來(lái)的好處就是“自動(dòng)化編譯”,一旦寫好,只需要一個(gè)make命令,整個(gè)工程完全自動(dòng)編譯,極大的提高了軟件開發(fā)的效率。
④ 我們現(xiàn)在對(duì)makefile的位置和數(shù)量簡(jiǎn)單說(shuō)一下。一般情況下,makefile會(huì)跟項(xiàng)目的源文件放在同一個(gè)目錄中。另外,系統(tǒng)中可以有多個(gè)makefile,一般說(shuō)來(lái)一個(gè)項(xiàng)目使用一個(gè)makefile就可以了;
因此,有效的利用make和makefile工具可以大大提高項(xiàng)目開發(fā)的效率。同時(shí)掌握make和makefile之后,您也不會(huì)再面對(duì)著Linux下的應(yīng)用軟件手足無(wú)措了。
預(yù)備知識(shí)及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、./都是用來(lái)執(zhí)行腳本的命令
6)automake autoconf 使用詳解
autoconf命令用途:幫我們自動(dòng)生成Makefile文件
我們直接從helloworld.c實(shí)例入手講解:
下面的 過(guò)程如果簡(jiǎn)單地說(shuō)來(lái)就是 :
新建三個(gè)文件:
helloworld.c
configure.in
Makefile.am
然后執(zhí)行:
aclocal; autoconf; automake --add-missing; ./configure; make; ./helloworld
就可以看到Makefile被產(chǎn)生出來(lái),而且可以將helloworld.c編譯通過(guò).
很簡(jiǎn)單吧,幾條命令就可以做出一個(gè)符合慣例的 Makefile,
現(xiàn)在 開始介紹詳細(xì)的 過(guò)程:
先用命令查看是否有autoconf工具和automake工具,如果沒(méi)有請(qǐng)自行百度安裝:
1.建目錄
在 你的 工作目錄下建一個(gè)helloworld目錄,我們用它來(lái)存放helloworld程序及相關(guān)文件,如在 /home/my/build下:
$ mkdir helloword
$ cd helloworld
2. hello.c
然后用你自己最喜歡的 編輯器寫一個(gè)hello.c文件,如命令:vi hello.c.使用下面的 代碼作為hello.c的 內(nèi)容.
#include <stdio.h>
int main(){
printf("%s", 'hello world!");
return 0;
}
完成后保存退出.
現(xiàn)在 在 helloworld目錄下就應(yīng)該有一個(gè)你自己寫的 hello.c了.
3.生成configure
3.1 運(yùn)行autoscan命令產(chǎn)生configure.scan文件
3.2 將configure.scan文件重命名為configure.in文件
# mv configure.scan configure.in # ls autoscan.log configure.in hello.c3.3 修改configure.in里面的內(nèi)容如下:
# -*- 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 然后執(zhí)行命令aclocal和autoconf,分別會(huì)產(chǎn)生aclocal.m4及configure兩個(gè)文件:
# 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 手動(dòng)創(chuàng)建并編輯如下的Makefile.am文件
新建Makefile.am文件,并輸入如下內(nèi)容,命令:
automake會(huì)根據(jù)你寫的 Makefile.am來(lái)自動(dòng)生成Makefile.in.
3.6 執(zhí)行automake --add-missing命令,產(chǎn)生Makefile.in文件,使用選項(xiàng)”–add-missing”可以讓automake自動(dòng)添加一些必需的腳本文件。
3.7 最后執(zhí)行./configure命令,自動(dòng)產(chǎn)生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 運(yùn)行hello
# ./hello hello world!具體內(nèi)容參考:https://www.cnblogs.com/liujx2019/p/10310064.html
7)configure就是6)過(guò)程中生成的腳本文件
8)為什么我安裝的時(shí)候要先./configure,然后make,然后make install呢?
1:./configure 是軟件的組態(tài)設(shè)置文件 產(chǎn)生對(duì)應(yīng)平臺(tái)的Makefile。你可以通過(guò)在 configure 后加上參數(shù)來(lái)對(duì)安裝進(jìn)行控制,比如代碼:./configure –prefix=/usr 意思是將該軟件安裝在 /usr 下面,執(zhí)行文件就會(huì)安裝在 /usr/bin (而不是默認(rèn)的 /usr/local/bin),資源文件就會(huì)安裝在 /usr/share(而不是默認(rèn)的/usr/local/share)。
2:make 根據(jù)Makefile的內(nèi)容 編譯出符合平臺(tái)的可執(zhí)行文件
3:make install 安裝編譯成功的軟件
4:make clean清除編譯成功的obj and binary
二、可以使用yum進(jìn)行安裝
1、安裝git:yum install git
2、查看yum源倉(cāng)庫(kù)Git信息:yum info git
3、安裝依賴庫(kù):yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel
yum install gcc-c++ perl-ExtUtils-MakeMaker4、查看git版本,如果默認(rèn)安裝的版本過(guò)低,移除默認(rèn)安裝的git
4.1、查看版本信息:git --version4.2、移除默認(rèn)安裝的git:yum remove git三、自行下載安裝Git
最新git源碼下載地址:https://github.com/git/git/releaseshttps://www.kernel.org/pub/software/scm/git/1、下載
1.1、用wegt命令進(jìn)行下載: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、進(jìn)入解壓后的git目錄:cd /usr/local/src/git-2.21.0.tar.gz
Git 的工作需要調(diào)用 curl,zlib,openssl,expat,libiconv 等庫(kù)的代碼,所以需要先安裝這些依賴工具。安裝編譯依賴
3.3、配置目錄,設(shè)置安裝路徑:# ./configure --prefix=/usr/local/git
3.4、編譯 # make
3.5、安裝# make install
4、 配置環(huán)境變量
vim /etc/profile在文件末尾輸入以下內(nèi)容:
# GIT_HOME GIT_HOME=/usr/local/git export PATH=$PATH:$GIT_HOME/bin#刷新
source /etc/profile
移動(dòng)到根目錄輸入,顯示版本就沒(méi)問(wèn)題啦!
總結(jié)
以上是生活随笔為你收集整理的超详细的CentOS7中安装Git,yum安装和自己编译安装的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: falsk-sqlalchemy 连接数
- 下一篇: pipfile和pipfile.lock