国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁 > news >正文

南昌網(wǎng)站建設(shè)費(fèi)用四川seo優(yōu)化

南昌網(wǎng)站建設(shè)費(fèi)用,四川seo優(yōu)化,wordpress css3,黑客攻擊的網(wǎng)站Linux 軟件包管理器 yum 什么是軟件包: 在Linux下安裝軟件, 一個(gè)通常的辦法是下載到程序的源代碼, 并進(jìn)行編譯, 得到可執(zhí)行程序. 但是這樣太麻煩了, 于是有些人把一些常用的軟件提前編譯好, 做成軟件包(可以理解成windows上的安裝程序)放在一個(gè)服務(wù)器上, 通…

Linux 軟件包管理器 yum

什么是軟件包:

????????在Linux下安裝軟件, 一個(gè)通常的辦法是下載到程序的源代碼, 并進(jìn)行編譯, 得到可執(zhí)行程序.
????????但是這樣太麻煩了, 于是有些人把一些常用的軟件提前編譯好, 做成軟件包(可以理解成windows上的安裝程序)放在一個(gè)服務(wù)器上, 通過包管理器可以很方便的獲取到這個(gè)編譯好的軟件包, 直接進(jìn)行安裝.
????????軟件包和軟件包管理器, 就好比 "App" 和 "應(yīng)用商店" 這樣的關(guān)系.
????????yum(Yellow dog Updater, Modified)是Linux下非常常用的一種包管理器. 主要應(yīng)用在Fedora, RedHat,Centos等發(fā)行版上

總結(jié):?

Linux中進(jìn)行工具、指令。程序、安裝、檢查、卸載等需要yum軟件。

安裝軟件的方法:

? ? ? ? 1.源代碼安裝(需要我們?nèi)フ业皆创a,自己編譯,沒問題后再導(dǎo)入)-----不建議

? ? ? ? 2.rpm包直接安裝(需要找源代碼包,在VS下編譯,沒問題在導(dǎo)入)-----不建議

? ? ? ? 3.yum(CentOs 7)、apt-get(Ubuntu)----非常簡(jiǎn)單上手

yum是我們Linux預(yù)裝的一個(gè)指令,可以搜索。下載。安裝對(duì)應(yīng)的軟件。

關(guān)于rzsz:

????????這個(gè)工具用于 windows 機(jī)器和遠(yuǎn)端的 Linux 機(jī)器通過 XShell 傳輸文件.
安裝完畢之后可以通過拖拽的方式將文件上傳過去。

注意事項(xiàng):

關(guān)于 yum 的所有操作必須保證主機(jī)(虛擬機(jī))網(wǎng)絡(luò)暢通!!!
可以通過 ping 指令驗(yàn)證

實(shí)現(xiàn):?

首先需要導(dǎo)入軟件包:yum install -y lrzsz

如果無法安裝就需要一個(gè)擴(kuò)展包(yum install -y epel-release),后再導(dǎo)入lrzsz。

將文件傳到Linux上(或者直接鼠標(biāo)進(jìn)行拖入):

將文件傳到Windows上:

查看軟件包:

????????通過 yum list 命令可以羅列出當(dāng)前一共有哪些軟件包. 由于包的數(shù)目可能非常之多, 這里我們需要使用 grep 命令只篩選出我們關(guān)注的包.

例如: yum list | grep sl

得到結(jié)果:sl.x86_64 0.12.20-36.el7 @base

注意事項(xiàng):

????????軟件包名稱: 主版本號(hào).次版本號(hào).源程序發(fā)行號(hào)-軟件包的發(fā)行號(hào).主機(jī)平臺(tái).cpu架構(gòu).
????????"x86_64" 后綴表示64位系統(tǒng)的安裝包, "i686" 后綴表示32位系統(tǒng)安裝包. 選擇包時(shí)要和系統(tǒng)匹配.
????????"el7" 表示操作系統(tǒng)發(fā)行版的版本. "el7" 表示的是 centos7/redhat7. "el6" 表示 centos6/redhat6.
????????最后一列, base 表示的是 "軟件源" 的名稱, 類似于 "小米應(yīng)用商店", "華為應(yīng)用商店" 這樣的概念.

如何安裝軟件:

通過 yum, 我們可以通過很簡(jiǎn)單的一條命令完成 gcc 的安裝.
例如:root用戶下:yum install sl

? ? ? ? 其他用戶(使用dudo需要在白名單):sudo yum install lrzsz

注意事項(xiàng):

????????安裝軟件時(shí)由于需要向系統(tǒng)目錄中寫入內(nèi)容, 一般需要 sudo 或者切到 root 賬戶下才能完成.
????????yum安裝軟件只能一個(gè)裝完了再裝另一個(gè). 正在yum安裝一個(gè)軟件的過程中, 如果再嘗試用yum安裝另外一個(gè)軟件, yum會(huì)報(bào)錯(cuò).

如何卸載軟件:

root用戶: yum remove lrzsz

其他用戶(使用dudo需要在白名單):sudo yum remove lrzsz

yum的生態(tài) :

通過上面的了解我們知道怎么去查看,下載,刪除一個(gè)軟件。

1.那么yum是如何得知目標(biāo)服務(wù)器的地址和下載鏈接的呢?

答:yum源(.repo的都是yum源)。其中CentOS-Base.repo里面就包含了這些信息。

2.云服務(wù)器是誰提供的?

答:國(guó)內(nèi)各種組織,對(duì)應(yīng)社區(qū)參與者或組織,利益相關(guān)者,它們會(huì)把國(guó)外Cent OS倉(cāng)庫(kù)鏡像到國(guó)內(nèi)。

3.是誰提供軟件?

答:全球的Cent OS社區(qū),各自社區(qū)的人或者Linux的參與者。

4.它們?yōu)槭裁刺峁?#xff1f;

答:第一類:使用這個(gè)OS,享受到了OS帶來的便捷,就有技術(shù)動(dòng)力,將對(duì)應(yīng)的社區(qū)維護(hù)好;第二類:寫軟件的人有使命感(為愛發(fā)電)。

擴(kuò)展:?

????????我們?cè)谏厦姘惭b的擴(kuò)展包:yum install -y epel-release,是為了找到更多的軟件,因?yàn)榛A(chǔ)軟件源(CenOS-Base.repo)為了保持穩(wěn)定性就一般不會(huì)進(jìn)行頻繁的添加軟件,所以就有擴(kuò)展軟件源(epel.repo)。

Linux開發(fā)工具

vim的基本概念:

目前掌握這3種即可:分別是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能區(qū)分如下:
????????正常/普通/命令模式(Normal mode)
控制屏幕光標(biāo)的移動(dòng),字符、字或行的刪除,移動(dòng)復(fù)制某區(qū)段及進(jìn)入Insert mode下,或者到 last line mode
????????插入模式(Insert mode)
只有在Insert mode下,才可以做文字輸入,按「ESC」鍵可回到命令行模式。該模式是我們后面用的最頻繁
的編輯模式。
? ? ? ? 底行模式(last line mode)
文件保存或退出,也可以進(jìn)行文件替換,找字符串,列出行號(hào)等操作。 在命令模式下,shift+: 即可進(jìn)入該模式。要查看你的所有模式:

打開vim,底行模式直接輸入:help vim-modes? (一共有12種模式)

vim的基本操作:

進(jìn)入vim,在系統(tǒng)提示符號(hào)輸入vim及文件名稱后,就進(jìn)入vim全屏幕編輯畫面:
????????$ vim test.c
????????不過有一點(diǎn)要特別注意,就是你進(jìn)入vim之后,是處于[命令模式],你要切換到[插入模式]才能夠輸入文字。
[命令模式]切換至[插入模式]
????????輸入a
????????輸入i
????????輸入o
[插入模式]切換至[命令模式]
目前處于[插入模式],就只能一直輸入文字,如果發(fā)現(xiàn)輸錯(cuò)了字,想用光標(biāo)鍵往回移動(dòng),將該字刪除,可以先按一下「ESC」鍵轉(zhuǎn)到[正常模式]再刪除文字。當(dāng)然,也可以直接刪除。
[命令模式]切換至[底行模式]
????????「shift + ;」, 其實(shí)就是輸入「:」
退出vim及保存文件,在[命令模式]下,按一下「:」冒號(hào)鍵進(jìn)入「底行模式」,

例如:
????????: w (保存當(dāng)前文件)
????????: wq (輸入「wq」,存盤并退出vim)
????????: q! (輸入q)

vim命令模式命令集:

常用的模式切換:

插入模式:

按「i」切換進(jìn)入插入模式「insert mode」,按“i”進(jìn)入插入模式后是從光標(biāo)當(dāng)前位置開始輸入文件;
按「a」進(jìn)入插入模式后,是從目前光標(biāo)所在位置的下一個(gè)位置開始輸入文字;
按「o」進(jìn)入插入模式后,是插入新的一行,從行首開始輸入文字。

從插入模式切換到命令模式:

按「ESC」鍵。

移動(dòng)光標(biāo):

在了解操作前,我們先了解一下曾經(jīng)的鍵盤:

vim可以直接用鍵盤上的光標(biāo)來上下左右移動(dòng),但正規(guī)的vim是用小寫英文字母「h」、「j」、「k」、「l」,分別控制光標(biāo)左、下、上、右移一格
按「G」:移動(dòng)到文章的最后
按「 $ 」:移動(dòng)到光標(biāo)所在行的“行尾”
按「^」:移動(dòng)到光標(biāo)所在行的“行首”
按「w」:光標(biāo)跳到下個(gè)單詞的開頭
按「e」:光標(biāo)跳到下個(gè)單詞的字尾
按「b」:光標(biāo)回到上個(gè)單詞的開頭

按「#l」:光標(biāo)移到該行的第#個(gè)位置,如:5l,56l
按[gg]:進(jìn)入到文本開始
按[shift+g]:進(jìn)入文本末端
按「ctrl」+「b」:屏幕往“后”移動(dòng)一頁
按「ctrl」+「f」:屏幕往“前”移動(dòng)一頁
按「ctrl」+「u」:屏幕往“后”移動(dòng)半頁
按「ctrl」+「d」:屏幕往“前”移動(dòng)半頁

刪除文字:

「x」:每按一次,刪除光標(biāo)所在位置的一個(gè)字符
「#x」:例如,「6x」表示刪除光標(biāo)所在位置的“后面(包含自己在內(nèi))”6個(gè)字符
「X」:大寫的X,每按一次,刪除光標(biāo)所在位置的“前面”一個(gè)字符
「#X」:例如,「20X」表示刪除光標(biāo)所在位置的“前面”20個(gè)字符
「dd」:刪除光標(biāo)所在行
「#dd」:從光標(biāo)所在行開始刪除#行

復(fù)制:

「yw」:將光標(biāo)所在之處到字尾的字符復(fù)制到緩沖區(qū)中。
「#yw」:復(fù)制#個(gè)字到緩沖區(qū)
「yy」:復(fù)制光標(biāo)所在行到緩沖區(qū)。
「#yy」:例如,「6yy」表示拷貝從光標(biāo)所在的該行“往下數(shù)”6行文字。
「p」:將緩沖區(qū)內(nèi)的字符貼到光標(biāo)所在位置。注意:所有與“y”有關(guān)的復(fù)制命令都必須與“p”配合才能完成復(fù)制與粘貼功能。

替換:

「r」:替換光標(biāo)所在處的字符。

「R」:替換光標(biāo)所到之處的字符,直到按下「ESC」鍵為止。

撤銷上一次操作:

「u」:如果您誤執(zhí)行一個(gè)命令,可以馬上按下「u」,回到上一個(gè)操作。按多次“u”可以執(zhí)行多次回
復(fù)。
「ctrl + r」: 撤銷的恢復(fù)

更改:

「cw」:更改光標(biāo)所在處的字到字尾處
「c#w」:例如,「c3w」表示更改3個(gè)字

跳到指定行:

「ctrl」+「g」列出光標(biāo)所在行的行號(hào)。
「#G」:例如,「15G」,表示移動(dòng)光標(biāo)至文章的第15行行首

vim底行模式:

在使用末行模式之前,請(qǐng)記住先按「ESC」鍵確定您已經(jīng)處于正常模式,再按「:」冒號(hào)即可進(jìn)入末行模式。
列出行號(hào):
「set nu」: 輸入「set nu」后,會(huì)在文件中的每一行前面列出行號(hào)。
跳到文件中的某一行:
「#」:「#」號(hào)表示一個(gè)數(shù)字,在冒號(hào)后輸入一個(gè)數(shù)字,再按回車鍵就會(huì)跳到該行了,如輸入數(shù)字15,再回車,就會(huì)跳到文章的第15行。

查找字符:
「/關(guān)鍵字」: 先按「/」鍵,再輸入您想尋找的字符,如果第一次找的關(guān)鍵字不是您想要的,可以一直按「n」會(huì)往后尋找到您要的關(guān)鍵字為止。
「?關(guān)鍵字」:先按「?」鍵,再輸入您想尋找的字符,如果第一次找的關(guān)鍵字不是您想要的,可以一直按「n」會(huì)往前尋找到您要的關(guān)鍵字為止。

問題:/ 和 ?查找有和區(qū)別?操作實(shí)驗(yàn)一下

答:'' / ”是從前往后," ? "是從后往前。
保存文件:
「w」: 在冒號(hào)輸入字母「w」就可以將文件保存起來
離開vim:
「q」:按「q」就是退出,如果無法離開vim,可以在「q」后跟一個(gè)「!」強(qiáng)制離開vim。
「wq」:一般建議離開時(shí),搭配「w」一起使用,這樣在退出的時(shí)候還可以保存文件。

?

擴(kuò)展:?

在命令模式:

? ? ? ? shift + zz:也能實(shí)現(xiàn)保存并退出

? ? ? ? 注釋:ctrl+v,再hjkl或上下左右進(jìn)行選擇,然后shift+i,輸入注釋符:?//,最后退出Esc即可完成注釋;

? ? ? ? 取消注釋:?ctrl+v,再hjkl或上下左右進(jìn)行選擇,最后按下:d,即可完成取消注釋

在底行模式:

顯示行號(hào):set nu;

取消行號(hào):set nonu;

配置在vim界面里使用鼠標(biāo):

首先在終端下輸入:vim ~/.vimrc

然后在vim的插入模式下輸入:set mouse=a

然后在底行保持并退出輸入:wq

最后在終端執(zhí)行:source ~/.vimrc

此時(shí)再使用vim就可以使用鼠標(biāo)了!

vim操作總結(jié):

主要的三種模式:

? ? ? ? 命令/正常模式;

? ? ? ? 插入模式;

? ? ? ? 底行模式;

vim操作:

????????打開,關(guān)閉,查看,查詢,插入,刪除,替換,撤銷,復(fù)制等等操作。

Linux編譯器-gcc/g++使用

背景知識(shí):

1. 預(yù)處理(進(jìn)行宏替換)
2. 編譯(生成匯編)
3. 匯編(生成機(jī)器可識(shí)別代碼)
4. 連接(生成可執(zhí)行文件或庫(kù)文件)?

5. 語言和編譯器的自舉過程:

gcc如何完成:

格式:?gcc [選項(xiàng)] 要編譯的文件 [選項(xiàng)] [目標(biāo)文件]

預(yù)處理 :

預(yù)處理:gcc -E test.c -o test.i(從開始進(jìn)行程序的翻譯過程,當(dāng)預(yù)處理做完的時(shí)候,就停下來!)?

????????預(yù)處理指令是以#號(hào)開頭的代碼行。
????????選項(xiàng)“-E”,該選項(xiàng)的作用是讓 gcc 在預(yù)處理結(jié)束后停止編譯過程。
????????選項(xiàng)“-o”是指目標(biāo)文件,“.i”文件為已經(jīng)過預(yù)處理的C原始程序

? ? ? ? ????????頭文件展開:將<stdio.h>庫(kù)里的函數(shù)等已經(jīng)定義好的東西,從投建內(nèi)容拷貝至源文件;

·? ? ? ?????????去注釋:將注釋的代碼段進(jìn)行剔除;

? ? ? ????????? 宏替換:將宏定義的內(nèi)容進(jìn)行替換;

? ? ? ? ????????條件編譯:如:防止頭文件的重復(fù)包含,導(dǎo)致的多次展開(通過給編譯器傳遞不同的宏值,來進(jìn)行對(duì)代碼的動(dòng)態(tài)裁剪!!!);

????????此時(shí)的到的還是C語言寫的文本!!!

這里的-D:指定義一個(gè)宏

編譯(C語言->匯編):

編譯:gcc -S?test.i?-o test.s(從開始進(jìn)行程序的翻譯過程,當(dāng)編譯做完的時(shí)候,就停下來!)?

在這個(gè)階段中,gcc 首先要檢查代碼的規(guī)范性、是否有語法錯(cuò)誤等,以確定代碼的實(shí)際要做的工作,在檢查無誤后,gcc 把代碼翻譯成匯編語言。
用戶可以使用“-S”選項(xiàng)來進(jìn)行查看,該選項(xiàng)只進(jìn)行編譯而不進(jìn)行匯編,生成匯編代碼。
?

匯編( 匯編->二進(jìn)制(可重定位目標(biāo)二進(jìn)制文件[是不能執(zhí)行的])):

匯編:gcc -c?test.s?-o test.o(從開始進(jìn)行程序的翻譯過程,當(dāng)匯編做完的時(shí)候,就停下來!)?

? ? ??

匯編階段是把編譯階段生成的“.s”文件轉(zhuǎn)成目標(biāo)文件
讀者在此可使用選項(xiàng)“-c”就可看到匯編代碼已轉(zhuǎn)化為“.o”的二進(jìn)制目標(biāo)代碼了。

鏈接(生成可執(zhí)行文件或庫(kù)文件):

鏈接:gcc?-o test? test.o

在成功編譯之后,就進(jìn)入了鏈接階段.

函數(shù)庫(kù):

????????我們的C程序中,并沒有定義“printf”的函數(shù)實(shí)現(xiàn),且在預(yù)編譯中包含的“stdio.h”中也只有該函數(shù)的聲明,而沒有定義函數(shù)的實(shí)現(xiàn),那么,是在哪里實(shí)“printf”函數(shù)的呢?

????????最后的答案是:系統(tǒng)把這些函數(shù)實(shí)現(xiàn)都被做到名為 libc.so.6 的庫(kù)文件中去了,在沒有特別指定時(shí),gcc 會(huì)到系統(tǒng)默認(rèn)的搜索路徑“/usr/lib”下進(jìn)行查找,也就是鏈接到 libc.so.6 庫(kù)函數(shù)中去,這樣就能實(shí)現(xiàn)函數(shù)“printf”了,而這也就是鏈接的作用。

查看文件的依賴庫(kù):ldd test.exe(編譯過的文件)?

結(jié)論:一個(gè)平臺(tái)要支持開發(fā),就必須要提前在系統(tǒng)中安裝該語言的標(biāo)準(zhǔn)頭文件+庫(kù)文件!!!

靜態(tài)庫(kù)(靜態(tài)鏈接):?

????????靜態(tài)庫(kù)是指編譯鏈接時(shí),把庫(kù)文件的代碼全部加入到可執(zhí)行文件中,因此生成的文件比較大,但在運(yùn)行時(shí)也就不再需要庫(kù)文件了。其后綴名一般為“.a”

理解:將自己所需的代碼拷貝到自己的可執(zhí)行程序中。

優(yōu)點(diǎn):不依賴庫(kù),在相同類型的平臺(tái)都可以總結(jié)運(yùn)行使用。

缺點(diǎn):可執(zhí)行程序體積比較大,比較浪費(fèi)資源(磁盤、內(nèi)存、網(wǎng)路等)。

動(dòng)態(tài)庫(kù)(動(dòng)態(tài)鏈接):

????????動(dòng)態(tài)庫(kù)與之相反,在編譯鏈接時(shí)并沒有把庫(kù)文件的代碼加入到可執(zhí)行文件中,而是在程序執(zhí)行時(shí)由運(yùn)行時(shí)鏈接文件加載庫(kù),這樣可以節(jié)省系統(tǒng)的開銷。動(dòng)態(tài)庫(kù)一般后綴名為“.so”,如前面所述的 libc.so.6 就是動(dòng)態(tài)庫(kù)。gcc 在編譯時(shí)默認(rèn)使用動(dòng)態(tài)庫(kù)。完成了鏈接之后,gcc 就可以生成可執(zhí)行文件,如下所示。 gcc test.o -o test.exe?
????????gcc默認(rèn)生成的二進(jìn)制程序,是動(dòng)態(tài)鏈接的,這點(diǎn)可以通過 file 命令驗(yàn)證。

理解:通過地址去訪問動(dòng)態(tài)庫(kù),可以被多個(gè)使用者共享使用,一旦缺失,所有的程序都不能運(yùn)行了!

優(yōu)點(diǎn):比較節(jié)省資源(磁盤、內(nèi)存、網(wǎng)路等),不會(huì)出現(xiàn)太多的重復(fù)代碼。

缺點(diǎn):對(duì)庫(kù)的依賴性比較強(qiáng),一旦庫(kù)丟失,所有使用這個(gè)庫(kù)的程序都無法運(yùn)行!

補(bǔ)充知識(shí):?

我們應(yīng)該怎么用動(dòng)態(tài)庫(kù)和靜態(tài)庫(kù)呢?

答:我們默認(rèn)的gcc/g++編譯一個(gè)文件,默認(rèn)使用的就是動(dòng)態(tài)鏈接,如果我們想使用靜態(tài)鏈接,首先就需要調(diào)入靜態(tài)庫(kù)的包:yum install -y glibc-static?,然后編譯。可以看到靜態(tài)鏈接的文件大小單單幾個(gè)printf就已經(jīng)是動(dòng)態(tài)鏈接的100倍了,明顯體現(xiàn)了靜態(tài)鏈接對(duì)資源的消耗。

gcc選項(xiàng):

-E 只激活預(yù)處理,這個(gè)不生成文件,你需要把它重定向到一個(gè)輸出文件里面
-S 編譯到匯編語言不進(jìn)行匯編和鏈接
-c 編譯到目標(biāo)代碼
-o 文件輸出到 文件
-static 此選項(xiàng)對(duì)生成的文件采用靜態(tài)鏈接
-g 生成調(diào)試信息。GNU 調(diào)試器可利用該信息。
-shared 此選項(xiàng)將盡量使用動(dòng)態(tài)庫(kù),所以生成文件比較小,但是需要系統(tǒng)由動(dòng)態(tài)庫(kù).
-O0,-O1,-O2,-O3 編譯器的優(yōu)化選項(xiàng)的4個(gè)級(jí)別,-O0表示沒有優(yōu)化,-O1為缺省值,-O3優(yōu)化級(jí)別最高
-w 不生成任何警告信息。
-Wall 生成所有警告信息。

Linux項(xiàng)目自動(dòng)化構(gòu)建工具-make/Makefile

背景:

????????會(huì)不會(huì)寫makefile,從一個(gè)側(cè)面說明了一個(gè)人是否具備完成大型工程的能力
????????一個(gè)工程中的源文件不計(jì)數(shù),其按類型、功能、模塊分別放在若干個(gè)目錄中,makefile定義了一系列的規(guī)則來指定,哪些文件需要先編譯,哪些文件需要后編譯,哪些文件需要重新編譯,甚至于進(jìn)行更復(fù)雜的功能操作
????????makefile帶來的好處就是——“自動(dòng)化編譯”,一旦寫好,只需要一個(gè)make命令,整個(gè)工程完全自動(dòng)編譯,極大的提高了軟件開發(fā)的效率。
????????make是一個(gè)命令工具,是一個(gè)解釋makefile中指令的命令工具,一般來說,大多數(shù)的IDE都有這個(gè)命令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make??梢?#xff0c;makefile都成為了一種在工程方面的編譯方法。
????????make是一條命令,makefile是一個(gè)文件,兩個(gè)搭配使用,完成項(xiàng)目自動(dòng)化構(gòu)建。

原理:

make是如何工作的,在默認(rèn)的方式下,也就是我們只輸入make命令。那么,
????????1. make會(huì)在當(dāng)前目錄下找名字叫“Makefile”或“makefile”的文件。
????????2. 如果找到,它會(huì)找文件中的第一個(gè)目標(biāo)文件(target),在上面的例子中,他會(huì)找到“hello”這個(gè)文件,并把這個(gè)文件作為最終的目標(biāo)文件。
????????3. 如果hello文件不存在,或是hello所依賴的后面的hello.o文件的文件修改時(shí)間要比hello這個(gè)文件新(可以用 touch 測(cè)試),那么,他就會(huì)執(zhí)行后面所定義的命令來生成hello這個(gè)文件。
????????4. 如果hello所依賴的hello.o文件不存在,那么make會(huì)在當(dāng)前文件中找目標(biāo)為hello.o文件的依賴性,如果找到則再根據(jù)那一個(gè)規(guī)則生成hello.o文件。(這有點(diǎn)像一個(gè)堆棧的過程)
????????5. 當(dāng)然,你的C文件和H文件是存在的,于是make會(huì)生成 hello.o 文件,然后再用 hello.o 文件聲明make的終極任務(wù),也就是執(zhí)行文件hello了。
????????6. 這就是整個(gè)make的依賴性,make會(huì)一層又一層地去找文件的依賴關(guān)系,直到最終編譯出第一個(gè)目標(biāo)文件。
????????7. 在找尋的過程中,如果出現(xiàn)錯(cuò)誤,比如最后被依賴的文件找不到,那么make就會(huì)直接退出,并報(bào)錯(cuò),而對(duì)于所定義的命令的錯(cuò)誤,或是編譯不成功,make根本不理。
????????8. make只管文件的依賴性,即,如果在我找了依賴關(guān)系之后,冒號(hào)后面的文件還是不在,那么對(duì)不起,我就不工作啦。

項(xiàng)目清理(clean):

????????工程是需要被清理的
????????像clean這種,沒有被第一個(gè)目標(biāo)文件直接或間接關(guān)聯(lián),那么它后面所定義的命令將不會(huì)被自動(dòng)執(zhí)行,不過,我們可以顯示要make執(zhí)行。即命令——“make clean”,以此來清除所有的目標(biāo)文件,以便重編譯。
????????但是一般我們這種clean的目標(biāo)文件,我們將它設(shè)置為偽目標(biāo),用 .PHONY 修飾,偽目標(biāo)的特性是,總是被執(zhí)行的。

使用:?

首先需要創(chuàng)建一個(gè)makefile文件,在里面輸入以下內(nèi)容:

這樣我們在終端輸入make就會(huì)進(jìn)行編譯,如果輸入make clean就會(huì)執(zhí)行將test.i test.s test.o mytest刪除為什么要?jiǎng)h除呢?因?yàn)閙ake的執(zhí)行根文件的內(nèi)容的更改時(shí)間和已經(jīng)生成的可執(zhí)行文件的時(shí)間來對(duì)比,如果可執(zhí)行文件是在文件修改時(shí)間后創(chuàng)建的就不會(huì)再執(zhí)行編譯工作!!!

所以就需要我們先刪除以生成的可執(zhí)行文件!

依賴關(guān)系和依賴方法:?

在上面的使用中:mytest:test.c是依賴關(guān)系;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ?gcc -o mytest test.c 是依賴方法。

makefile的擴(kuò)展補(bǔ)充:

1.偽目標(biāo)(.PHONY:):? ? ? ??

????????修飾mytest目標(biāo)文件,讓目標(biāo)文件稱為一個(gè)偽目標(biāo):這個(gè)目標(biāo)文件總被執(zhí)行? ,就不會(huì)因?yàn)槲募?nèi)容沒有改變而不執(zhí)行!(即:跳過時(shí)間的對(duì)比)

??2.$@ 和 $^ 以及3.定義變量:

4.一個(gè)編譯過程的依賴關(guān)系:

這個(gè)過程中只要缺失一個(gè)都會(huì)導(dǎo)致依賴關(guān)系不全而導(dǎo)致后續(xù)的編譯無法完成:

總結(jié):

? ? ? ? 1.makefile和make形成目標(biāo)文件的時(shí)候,默認(rèn)是從上到下掃描makefile文件的,默認(rèn)形成的是第一個(gè)目標(biāo)文件;

? ? ? ? 2.默認(rèn)只形成一個(gè),如:mytest:test.c 或 clean 形成其中一個(gè);

? ? ? ? 3.在makefile中注釋用‘ # ’;

? ? ? ? 4.一般建議clean寫成偽目標(biāo)(.PHONY:);? ?

?以上就是個(gè)人學(xué)習(xí)的見解和學(xué)習(xí)過程的解析,歡迎各位大佬在評(píng)論區(qū)探討,交流!
如果本篇對(duì)你有幫助的話,三連支持一下吧。
感謝大佬們的三連!?感謝大佬們的三連!?感謝大佬們的三連!

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

http://aloenet.com.cn/news/28044.html

相關(guān)文章:

  • 做網(wǎng)站的要多錢百度關(guān)鍵詞優(yōu)化
  • 網(wǎng)站開發(fā)難點(diǎn)站長(zhǎng)工具seo查詢
  • wordpress添加文章副標(biāo)題谷歌seo服務(wù)商
  • 泰興網(wǎng)站制作網(wǎng)絡(luò)營(yíng)銷策劃方案模板
  • 搭建網(wǎng)站做財(cái)務(wù)系統(tǒng)網(wǎng)站建設(shè)流程步驟
  • 網(wǎng)友seo排名賺掛機(jī)
  • 成功網(wǎng)站管理系統(tǒng)十大網(wǎng)絡(luò)推廣公司排名
  • 做網(wǎng)站宣傳多少錢如何快速網(wǎng)絡(luò)推廣
  • 做網(wǎng)站的外包能學(xué)到什么磁力蜘蛛
  • 大連網(wǎng)站建設(shè)seo怎么去優(yōu)化
  • 重慶市衛(wèi)生健康委員會(huì)福州短視頻seo網(wǎng)站
  • 天津重型網(wǎng)站建設(shè)推薦沈陽網(wǎng)站seo公司
  • 國(guó)內(nèi)外網(wǎng)站建設(shè)長(zhǎng)沙關(guān)鍵詞優(yōu)化平臺(tái)
  • 手機(jī)打開網(wǎng)站自動(dòng)跳轉(zhuǎn)網(wǎng)站優(yōu)化排名推薦
  • 做生意必定紅火的公司名字win10優(yōu)化
  • 網(wǎng)站favicon.ico 大小做網(wǎng)站用什么軟件
  • 做網(wǎng)站公司名字應(yīng)該用圖片嗎網(wǎng)站seo優(yōu)化工具
  • 聯(lián)通營(yíng)業(yè)廳做網(wǎng)站維護(hù)知乎營(yíng)銷平臺(tái)
  • 東莞網(wǎng)站維護(hù)網(wǎng)站制作費(fèi)用一覽表
  • 廣安網(wǎng)站制作設(shè)計(jì)掃描圖片找原圖
  • 濟(jì)寧網(wǎng)站建設(shè)關(guān)鍵字是什么意思
  • 企業(yè)管理軟件是什么杭州seo博客
  • 微信網(wǎng)站制作價(jià)格競(jìng)價(jià)防惡意點(diǎn)擊
  • 做爰視頻無風(fēng)險(xiǎn)網(wǎng)站廣告有限公司
  • 服裝店網(wǎng)站模板網(wǎng)站快速建站
  • 深圳龍崗網(wǎng)站維護(hù)阿里域名購(gòu)買網(wǎng)站
  • 兩個(gè)人能用的一個(gè)公司做網(wǎng)站嗎怎樣注冊(cè)網(wǎng)站免費(fèi)注冊(cè)
  • 貴陽網(wǎng)站建設(shè)制作成都最新消息今天
  • 做網(wǎng)站公司在深圳谷歌瀏覽器官方app下載
  • 安徽建設(shè)行業(yè)安全協(xié)會(huì)網(wǎng)站友情鏈接交易平臺(tái)