国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Linux:詳解(yum的使用、vim編輯器命令集合以及gcc/g++編譯器的使用)

這篇具有很好參考價(jià)值的文章主要介紹了Linux:詳解(yum的使用、vim編輯器命令集合以及gcc/g++編譯器的使用)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

Linux:詳解(yum的使用、vim編輯器命令集合以及gcc/g++編譯器的使用),Linux,linux,運(yùn)維,centos,服務(wù)器,深度學(xué)習(xí),vim

Linux 軟件包管理器 yum

什么是軟件包:

????????在Linux下安裝軟件, 一個(gè)通常的辦法是下載到程序的源代碼, 并進(jìn)行編譯, 得到可執(zhí)行程序.
????????但是這樣太麻煩了, 于是有些人把一些常用的軟件提前編譯好, 做成軟件包(可以理解成windows上的安裝程序)放在一個(gè)服務(wù)器上, 通過(guò)包管理器可以很方便的獲取到這個(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,自己編譯,沒問(wèn)題后再導(dǎo)入)-----不建議

? ? ? ? 2.rpm包直接安裝(需要找源代碼包,在VS下編譯,沒問(wèn)題在導(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ī)器通過(guò) XShell 傳輸文件.
安裝完畢之后可以通過(guò)拖拽的方式將文件上傳過(guò)去。

注意事項(xiàng):

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

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

首先需要導(dǎo)入軟件包:yum install -y lrzsz
Linux:詳解(yum的使用、vim編輯器命令集合以及gcc/g++編譯器的使用),Linux,linux,運(yùn)維,centos,服務(wù)器,深度學(xué)習(xí),vim

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

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

Linux:詳解(yum的使用、vim編輯器命令集合以及gcc/g++編譯器的使用),Linux,linux,運(yùn)維,centos,服務(wù)器,深度學(xué)習(xí),vim

將文件傳到Windows上:

Linux:詳解(yum的使用、vim編輯器命令集合以及gcc/g++編譯器的使用),Linux,linux,運(yùn)維,centos,服務(wù)器,深度學(xué)習(xí),vim

查看軟件包:

????????通過(guò) 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)用商店" 這樣的概念.

如何安裝軟件:

通過(guò) yum, 我們可以通過(guò)很簡(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è)軟件的過(guò)程中, 如果再嘗試用yum安裝另外一個(gè)軟件, yum會(huì)報(bào)錯(cuò).

如何卸載軟件:

root用戶: yum remove lrzsz

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

yum的生態(tài) :

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

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

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

Linux:詳解(yum的使用、vim編輯器命令集合以及gcc/g++編譯器的使用),Linux,linux,運(yùn)維,centos,服務(wù)器,深度學(xué)習(xí),vim

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

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

3.是誰(shuí)提供軟件?

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

4.它們?yōu)槭裁刺峁?/strong>

答:第一類:使用這個(gè)OS,享受到了OS帶來(lái)的便捷,就有技術(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
????????不過(guò)有一點(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命令模式命令集:

常用的模式切換:

Linux:詳解(yum的使用、vim編輯器命令集合以及gcc/g++編譯器的使用),Linux,linux,運(yùn)維,centos,服務(wù)器,深度學(xué)習(xí),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)的鍵盤:

Linux:詳解(yum的使用、vim編輯器命令集合以及gcc/g++編譯器的使用),Linux,linux,運(yùn)維,centos,服務(wù)器,深度學(xué)習(xí),vim

vim可以直接用鍵盤上的光標(biāo)來(lái)上下左右移動(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)一頁(yè)
按「ctrl」+「f」:屏幕往“前”移動(dòng)一頁(yè)
按「ctrl」+「u」:屏幕往“后”移動(dòng)半頁(yè)
按「ctrl」+「d」:屏幕往“前”移動(dòng)半頁(yè)

刪除文字:

「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)鍵字為止。

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

答:'' / ”是從前往后," ? "是從后往前。
保存文件:
「w」: 在冒號(hào)輸入字母「w」就可以將文件保存起來(lái)
離開vim:
「q」:按「q」就是退出,如果無(wú)法離開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

Linux:詳解(yum的使用、vim編輯器命令集合以及gcc/g++編譯器的使用),Linux,linux,運(yùn)維,centos,服務(wù)器,深度學(xué)習(xí),vim

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

Linux:詳解(yum的使用、vim編輯器命令集合以及gcc/g++編譯器的使用),Linux,linux,運(yùn)維,centos,服務(wù)器,深度學(xué)習(xí),vim

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

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

Linux:詳解(yum的使用、vim編輯器命令集合以及gcc/g++編譯器的使用),Linux,linux,運(yùn)維,centos,服務(wù)器,深度學(xué)習(xí),vim

此時(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. 語(yǔ)言和編譯器的自舉過(guò)程:

Linux:詳解(yum的使用、vim編輯器命令集合以及gcc/g++編譯器的使用),Linux,linux,運(yùn)維,centos,服務(wù)器,深度學(xué)習(xí),vim

gcc如何完成:

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

預(yù)處理 :

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

Linux:詳解(yum的使用、vim編輯器命令集合以及gcc/g++編譯器的使用),Linux,linux,運(yùn)維,centos,服務(wù)器,深度學(xué)習(xí),vim

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

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

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

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

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

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

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

Linux:詳解(yum的使用、vim編輯器命令集合以及gcc/g++編譯器的使用),Linux,linux,運(yùn)維,centos,服務(wù)器,深度學(xué)習(xí),vim

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

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

Linux:詳解(yum的使用、vim編輯器命令集合以及gcc/g++編譯器的使用),Linux,linux,運(yùn)維,centos,服務(wù)器,深度學(xué)習(xí),vim

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

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

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

Linux:詳解(yum的使用、vim編輯器命令集合以及gcc/g++編譯器的使用),Linux,linux,運(yùn)維,centos,服務(wù)器,深度學(xué)習(xí),vim? ? ??

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

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

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

Linux:詳解(yum的使用、vim編輯器命令集合以及gcc/g++編譯器的使用),Linux,linux,運(yùn)維,centos,服務(wù)器,深度學(xué)習(xí),vim

在成功編譯之后,就進(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(編譯過(guò)的文件)?

Linux:詳解(yum的使用、vim編輯器命令集合以及gcc/g++編譯器的使用),Linux,linux,運(yùn)維,centos,服務(wù)器,深度學(xué)習(xí),vim

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

靜態(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)可以通過(guò) file 命令驗(yàn)證。

理解:通過(guò)地址去訪問(wè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ù)的程序都無(wú)法運(yùn)行!

Linux:詳解(yum的使用、vim編輯器命令集合以及gcc/g++編譯器的使用),Linux,linux,運(yùn)維,centos,服務(wù)器,深度學(xué)習(xí),vim

補(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?,然后編譯??梢钥吹?strong>靜態(tài)鏈接的文件大小單單幾個(gè)printf就已經(jīng)是動(dòng)態(tài)鏈接的100倍了,明顯體現(xiàn)了靜態(tài)鏈接對(duì)資源的消耗。

Linux:詳解(yum的使用、vim編輯器命令集合以及gcc/g++編譯器的使用),Linux,linux,運(yùn)維,centos,服務(wù)器,深度學(xué)習(xí),vim

gcc選項(xiàng):

-E 只激活預(yù)處理,這個(gè)不生成文件,你需要把它重定向到一個(gè)輸出文件里面
-S 編譯到匯編語(yǔ)言不進(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è)面說(shuō)明了一個(gè)人是否具備完成大型工程的能力
????????一個(gè)工程中的源文件不計(jì)數(shù),其按類型、功能、模塊分別放在若干個(gè)目錄中,makefile定義了一系列的規(guī)則來(lái)指定,哪些文件需要先編譯,哪些文件需要后編譯,哪些文件需要重新編譯,甚至于進(jìn)行更復(fù)雜的功能操作
????????makefile帶來(lái)的好處就是——“自動(dòng)化編譯”,一旦寫好,只需要一個(gè)make命令,整個(gè)工程完全自動(dòng)編譯,極大的提高了軟件開發(fā)的效率。
????????make是一個(gè)命令工具,是一個(gè)解釋makefile中指令的命令工具,一般來(lái)說(shuō),大多數(shù)的IDE都有這個(gè)命令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make。可見,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í)行后面所定義的命令來(lái)生成hello這個(gè)文件。
????????4. 如果hello所依賴的hello.o文件不存在,那么make會(huì)在當(dāng)前文件中找目標(biāo)為hello.o文件的依賴性,如果找到則再根據(jù)那一個(gè)規(guī)則生成hello.o文件。(這有點(diǎn)像一個(gè)堆棧的過(guò)程)
????????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. 在找尋的過(guò)程中,如果出現(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í)行,不過(guò),我們可以顯示要make執(zhí)行。即命令——“make clean”,以此來(lái)清除所有的目標(biāo)文件,以便重編譯。
????????但是一般我們這種clean的目標(biāo)文件,我們將它設(shè)置為偽目標(biāo),用 .PHONY 修飾,偽目標(biāo)的特性是,總是被執(zhí)行的。

使用:?

首先需要創(chuàng)建一個(gè)makefile文件,在里面輸入以下內(nèi)容:Linux:詳解(yum的使用、vim編輯器命令集合以及gcc/g++編譯器的使用),Linux,linux,運(yùn)維,centos,服務(wù)器,深度學(xué)習(xí),vim

這樣我們在終端輸入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í)間來(lái)對(duì)比,如果可執(zhí)行文件是在文件修改時(shí)間后創(chuàng)建的就不會(huì)再執(zhí)行編譯工作!??!Linux:詳解(yum的使用、vim編輯器命令集合以及gcc/g++編譯器的使用),Linux,linux,運(yùn)維,centos,服務(wù)器,深度學(xué)習(xí),vim

所以就需要我們先刪除以生成的可執(zhí)行文件!Linux:詳解(yum的使用、vim編輯器命令集合以及gcc/g++編譯器的使用),Linux,linux,運(yùn)維,centos,服務(wù)器,深度學(xué)習(xí),vim

依賴關(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í)行!(即:跳過(guò)時(shí)間的對(duì)比)

Linux:詳解(yum的使用、vim編輯器命令集合以及gcc/g++編譯器的使用),Linux,linux,運(yùn)維,centos,服務(wù)器,深度學(xué)習(xí),vim

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

Linux:詳解(yum的使用、vim編輯器命令集合以及gcc/g++編譯器的使用),Linux,linux,運(yùn)維,centos,服務(wù)器,深度學(xué)習(xí),vim

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

Linux:詳解(yum的使用、vim編輯器命令集合以及gcc/g++編譯器的使用),Linux,linux,運(yùn)維,centos,服務(wù)器,深度學(xué)習(xí),vim

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

Linux:詳解(yum的使用、vim編輯器命令集合以及gcc/g++編譯器的使用),Linux,linux,運(yùn)維,centos,服務(wù)器,深度學(xué)習(xí),vim

總結(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í)過(guò)程的解析,歡迎各位大佬在評(píng)論區(qū)探討,交流!
如果本篇對(duì)你有幫助的話,三連支持一下吧。
感謝大佬們的三連!?感謝大佬們的三連!?感謝大佬們的三連!

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??Linux:詳解(yum的使用、vim編輯器命令集合以及gcc/g++編譯器的使用),Linux,linux,運(yùn)維,centos,服務(wù)器,深度學(xué)習(xí),vim文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-752677.html

到了這里,關(guān)于Linux:詳解(yum的使用、vim編輯器命令集合以及gcc/g++編譯器的使用)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【linux】2 軟件管理器yum和編輯器vim

    【linux】2 軟件管理器yum和編輯器vim

    目錄 1. linux軟件包管理器yum 1.1?什么是軟件包 1.2?關(guān)于rzsz 1.3?注意事項(xiàng) 1.4?查看軟件包 1.5?如何安裝、卸載軟件 1.6 centos 7設(shè)置成國(guó)內(nèi)yum源 2. linux開發(fā)工具-Linux編輯器-vim使用 2.1?vim的基本概念 2.2?vim的基本操作 2.3 vim正常模式命令集 2.4 vim末行模式命令集 2.5?簡(jiǎn)單vim配置 ヾ(?

    2024年02月13日
    瀏覽(24)
  • 【Linux】軟件包管理器 yum | vim編輯器

    【Linux】軟件包管理器 yum | vim編輯器

    前言: 軟件包管理器 yum和vim編輯器講解 yum (Yellowdog Updater, Modified)是一個(gè)在基于 RPM(管理軟件包的格式和工具集合) 的 Linux 發(fā)行版中用于管理軟件包的工具,它提供了一種簡(jiǎn)單而強(qiáng)大的方式來(lái)安裝、更新和刪除軟件包,同時(shí)也能夠自動(dòng)解決軟件包之間的依賴關(guān)系。類似于

    2024年02月19日
    瀏覽(26)
  • Linux文本編輯器vim使用和配置詳解

    Linux文本編輯器vim使用和配置詳解

    ? vim是Linux的一款文本編輯器,可以用來(lái)編輯代碼,而且支持語(yǔ)法高亮,還可以進(jìn)行一系列配置使vim更多樣化。也可以運(yùn)行于windows,mac os上。 ? vim有多種模式,但目前我們只介紹絕大多數(shù)場(chǎng)景用的到的模式,也就是命令模式,插入模式和底行模式,其他模式以后用到了會(huì)介

    2024年02月05日
    瀏覽(31)
  • Linux Vim文本編輯器-Vim常用命令

    Linux Vim文本編輯器-Vim常用命令

    距離上次Linux的學(xué)習(xí),今天又是一個(gè)嶄新的起點(diǎn),我們用五天的時(shí)間學(xué)了一些Linux一些常用的操作命令,但掌握這些還是遠(yuǎn)遠(yuǎn)不夠的,這個(gè)世界就是這樣,將生于此,既是幸運(yùn)也是不幸,只有不斷地學(xué)習(xí)才能有自己的一席之地,話不多說(shuō),開始我們今天的Linux學(xué)習(xí)之旅。 目錄

    2024年02月06日
    瀏覽(35)
  • Linux---vi/vim編輯器、查閱命令

    Linux---vi/vim編輯器、查閱命令

    1.? vi vim編輯器三種模式 vim 是 vi 的加強(qiáng)版本,兼容 vi 的所有指令,不僅能編輯文本,而且還具有 shell 程序編輯的功能, 可以不同顏色的字體來(lái)辨別語(yǔ)法的正確性,極大方便了程序的設(shè)計(jì)和編輯性。 命令模式(Command mode): 命令模式下,所敲的按鍵編輯器都理解為命令,

    2024年02月06日
    瀏覽(49)
  • Linux編輯器——Vim詳解

    Linux編輯器——Vim詳解

    目錄 ?前言 ?vim的基本概念 ?vim的基本操作 ?vim命令模式命令集 ??vim末行模式命令集 ?簡(jiǎn)單vim配置 ?配置文件的位置 ?常用配置選項(xiàng) vi/vim的區(qū)別 簡(jiǎn)單點(diǎn)來(lái)說(shuō),它們都是多模式編輯器,不同的是vim是vi的升級(jí)版本,它不僅兼容vi的所有指令,而且還有一些新的特性在里面

    2024年02月21日
    瀏覽(29)
  • 【Linux】編輯器vim詳解

    【Linux】編輯器vim詳解

    ? ? vim是 文件編輯器 ,是vi的升級(jí)版本,兼容vi的所有指令,同時(shí)做了優(yōu)化和延伸。vim有多種模式,其中最常用的模式有命令模式、插入模式、底行模式以及替換模式和視圖模式。(視圖模式本文暫不提及) ? ?在使用vim編輯器進(jìn)行文件的編輯之前,需要確保自己的系統(tǒng)已經(jīng)

    2024年02月06日
    瀏覽(28)
  • 利用yum安裝vim編輯器

    利用yum安裝vim編輯器

    目錄 第一步 檢查是否已安裝 第二步 安裝vim 第三步 配置vim 如果你的輸出結(jié)果如下: 如果出現(xiàn)這些就代表你已經(jīng)安裝成功。 1.如果缺少其中某一個(gè),則執(zhí)行安裝缺失的包即可 2.如果像我的一樣就執(zhí)行下面代碼 安裝成功結(jié)果如下: 上述安裝完成后,開始配置vim,在最后添加

    2024年02月11日
    瀏覽(23)
  • 【Linux系列P4】Linux需要什么?編輯器?軟件包?一文幫你了解掌握 [yum]&[vim]———基礎(chǔ)開發(fā)工具篇

    【Linux系列P4】Linux需要什么?編輯器?軟件包?一文幫你了解掌握 [yum]&[vim]———基礎(chǔ)開發(fā)工具篇

    前言 大家好吖,歡迎來(lái)到 YY 滴 Linux系列 ,熱烈歡迎! 本章主要內(nèi)容面向未接觸過(guò)Linux的老鐵,主要內(nèi)容含 歡迎訂閱 YY 滴Linux專欄!更多干貨持續(xù)更新!以下是傳送門!? 訂閱專欄閱讀: YY 的《Linux》系列 ????? 【Linux系列-P1】 Linux環(huán)境的搭建 【Linux系列-P2】Linux的基本

    2024年02月06日
    瀏覽(31)
  • Linux:Vim文本編輯器及其應(yīng)用詳解

    眾多 Linux 發(fā)行版系統(tǒng),通常都已經(jīng)默認(rèn)安裝好了 vi 或 Vim 文本編輯器,Centos 也不例外,該系統(tǒng)就默認(rèn)安裝有 vi 文本編輯器,但建議大家使用 Vim。 如果在命令行模式下輸入“vim”,輸出結(jié)果為“Command not found”,則表示此系統(tǒng)中未安裝 Vim。 CentOS 系統(tǒng)中,使用如下命令即可安

    2024年02月12日
    瀏覽(34)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包