国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Linux環(huán)境基礎(chǔ)開發(fā)工具的使用

yintaolaowanzi / 3110人閱讀

摘要:按恢復(fù)剛剛的撤銷。按將光標(biāo)所在位置開始往后的個字刪除,并進入插入模式。跳至指定的行列出光標(biāo)所在行的行號。退出,如果無法離開,可在后面跟一個表示強制退出。和默認生成的二進制程序是動態(tài)鏈接的,可以使用指令查看。

Linux 軟件包管理器 yum

什么是軟件包

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

查看軟件包

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

例:

說明:

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

安裝軟件

通過 yum, 我們可以通過很簡單的一條命令完成安裝.

sudo?yum?install?軟件名

yum 會自動找到都有哪些軟件包需要下載, 這時候敲 “y” 確認安裝,出現(xiàn) “complete” 字樣, 說明安裝完成。

注意事項

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

卸載軟件

御卸的命令也很簡單

sudo?yum?remove?軟件名

Linux編輯器 - vim

vim的基本概念

vim在我們做開發(fā)的時候,主要解決我們編寫代碼的問題,本質(zhì)上就是一個多模式的文本編輯器。

vim最常用的三種模式:命令模式、插入模式、底行模式。

  1. 命令模式(Normal mode)
    在命令模式下,我們可以控制屏幕光標(biāo)的移動,字符、字或行的刪除,復(fù)制粘貼,剪貼等操作。
  2. 插入模式(Insert mode)
    只有在插入模式下,才可以做文字輸入,按「ESC」鍵可回到命令行模式。該模式是我們后面用的最頻繁的編輯模式。
  3. 末行模式(last line mode)
    文件保存或退出,也可以進行文件替換,找字符串,列出行號等操作。 在命令模式下,shift+: 即可進入該模式。

vim的基本操作

  • 進入vim,在系統(tǒng)提示符號輸入vim及文件名稱后,就進入vim全屏幕編輯畫面:

有一點要特別注意,就是你進入vim之后,是處于[正常模式],你要切換到[插入模式]才能夠輸入文字。

  • [正常模式]切換至[插入模式]

1)輸入「i」:按“i”進入插入模式后是從光標(biāo)當(dāng)前位置開始輸入文件。
2)輸入「a」:是從目前光標(biāo)所在位置的下一個位置開始輸入文字。
3)輸入「o」:是插入新的一行,從行首開始輸入文字。

  • [命令模式]切換至[底行模式]

輸入「Shift+;」即可,實際上就是輸入「:」

  • [插入模式]或[底行模式]切換至[命令模式]

按左上角的Esc即可

  • 退出vim及保存文件,在[正常模式]下,按一下「:」冒號鍵進入「Last line mode」,例如:

1)w (保存當(dāng)前文件)
2)wq (輸入「wq」,存盤并退出vim)
3)q! (輸入q!,不存盤強制退出vim)

vim正常模式命令集

移動光標(biāo)

1)按「k」:光標(biāo)上移。
2)按「j」:光標(biāo)下移。
3)按「h」:光標(biāo)左移。
4)按「l」:光標(biāo)右移。
5)按「$」:移動到光標(biāo)所在行的行尾。
6)按「^」:移動到光標(biāo)所在行的行首。
7)按「gg」:移動到文本開始。
8)按「Shift+g」:移動到文本末尾。
9)按「n+Shift+g」:移動到第n行行首。
10)按「n+Enter」:當(dāng)前光標(biāo)向下移動n行。
11)按「w」:光標(biāo)從左到右,從上到下的跳到下一個字的開頭。
12)按「e」:光標(biāo)從左到右,從上到下的跳到下一個字的結(jié)尾。
12)按「b」:光標(biāo)從右到左,從下到上的跳到上一個字的開頭

刪除

1)按「x」:刪除光標(biāo)所在位置的字符。
2)按「nx」:刪除光標(biāo)所在位置開始往后的n個字符。
3)按「X」:刪除光標(biāo)所在位置的前一個字符。
4)按「nX」:刪除光標(biāo)所在位置的前n個字符。
5)按「dd」:刪除光標(biāo)所在行。
6)按「ndd」:刪除光標(biāo)所在行開始往下的n行。

復(fù)制粘貼

1)按「yy」:復(fù)制光標(biāo)所在行到緩沖區(qū)。
2)按「nyy」:復(fù)制光標(biāo)所在行開始往下的n行到緩沖區(qū)。
3)按「yw」:將光標(biāo)所在位置開始到字尾的字符復(fù)制到緩沖區(qū)。
4)按「nyw」:將光標(biāo)所在位置開始往后的n個字復(fù)制到緩沖區(qū)。
5)按「p」:將已復(fù)制的內(nèi)容在光標(biāo)的下一行粘貼上。
6)按「np」:將已復(fù)制的內(nèi)容在光標(biāo)的下一行粘貼n次。

剪切

1)按「dd」:剪切光標(biāo)所在行。
2)按「ndd」:剪切光標(biāo)所在行開始往下的n行。
3)按「p」:將已剪切的內(nèi)容在光標(biāo)的下一行粘貼上。
4)按「np」:將已剪切的內(nèi)容在光標(biāo)的下一行粘貼n次。

撤銷

1)按「u」:撤銷。
2)按「Ctrl+r」:恢復(fù)剛剛的撤銷。

大小寫切換

1)按「~」:完成光標(biāo)所在位置字符的大小寫切換。
2)按「n~」:完成光標(biāo)所在位置開始往后的n個字符的大小寫切換。

替換

1)按「r」:替換光標(biāo)所在位置的字符。
2)按「R」:替換光標(biāo)所到位置的字符,直到按下「Esc」鍵為止。

更改

1)按「cw」:將光標(biāo)所在位置開始到字尾的字符刪除,并進入插入模式。
2)按「cnw」:將光標(biāo)所在位置開始往后的n個字刪除,并進入插入模式。

翻頁

1)按「Ctrl+b」:上翻一頁。
2)按「Ctrl+f」:下翻一頁。
3)按「Ctrl+u」:上翻半頁。
4)按「Ctrl+d」:下翻半頁。

跳至指定的行

1)「ctrl」+「g」列出光標(biāo)所在行的行號。
2) n+「ctrl」+「g」將光標(biāo)移動至文章的第n行行首

vim末行模式命令集

在使用底行模式之前,記住先按「Esc」鍵確定你已經(jīng)處于命令模式,再按「:」即可進入底行模式。

行號設(shè)置

1)「set?nu」:顯示行號。
2)「set?nonu」:取消行號。

保存退出

1)「w」:保存文件。
2)「q」:退出vim,如果無法離開vim,可在「q」后面跟一個「!」表示強制退出。
3)「wq」:保存退出。

分屏指令

1)「vs?文件名」:實現(xiàn)多文件的編輯。
2)「Ctrl+w+w」:光標(biāo)在多屏幕下進行切換。

執(zhí)行指令

1)「!+指令」:在不退出vim的情況下,可以在指令前面加上「!」就可以執(zhí)行Linux的指令,例如查看目錄、編譯當(dāng)前代碼等。

跳到文件中的某一行

1)「#」:「#」號表示一個數(shù)字,在冒號后輸入一個數(shù)字,再按回車鍵就會跳到該行了,如輸入數(shù)字15,再回車,就會跳到文章的第15行。

查找字符

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

Linux編譯器-gcc/g++

背景知識

C和C++在編譯代碼時一般會有如下4個步驟

  1. 預(yù)處理(頭文件展開、去注釋、宏替換、條件編譯)。
  2. 編譯(C代碼翻譯成匯編語言)。
  3. 匯編(匯編代碼轉(zhuǎn)為二進制目標(biāo)代碼)。
  4. 鏈接(將匯編過程產(chǎn)生的二進制代碼進行鏈接)。

gcc/g++的編譯

gcc/g++的語法:

gcc [選項] 要編譯的文件 [選項] [目標(biāo)文件]

預(yù)處理

gcc –E test.c –o test.i

  1. 預(yù)處理功能主要包括宏定義,文件包含,條件編譯,去注釋等。
  2. 預(yù)處理指令是以#號開頭的代碼行。
  3. 選項“-E”,該選項的作用是讓 gcc 在預(yù)處理結(jié)束后停止編譯過程.
  4. 選項“-o”是指目標(biāo)文件,“.i”文件為已經(jīng)過預(yù)處理的C原始程序。

編譯

gcc –S test.i –o test.s

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

匯編

gcc -c test.s -o test.o

  1. 匯編階段是把編譯階段生成的“.s”文件轉(zhuǎn)成目標(biāo)文件。
  2. 使用-c選項就可以得到匯編代碼轉(zhuǎn)化為“.o”文件的二進制目標(biāo)代碼了。

鏈接

gcc test.o -o test

  1. 在成功完成以上步驟之后,就進入了鏈接階段。
  2. 鏈接的主要任務(wù)就是將生成的各個“xxx.o”文件進行鏈接,生成可執(zhí)行文件。
  3. gcc/g++不帶-E、-S、-c選項時,就默認生成預(yù)處理、編譯、匯編、鏈接全過程后的文件。
  4. 若不用-o選項指定生成文件的文件名,則默認生成的可執(zhí)行文件名為a.out。


鏈接后生成的可執(zhí)行程序也是二進制文件。

靜態(tài)庫和動態(tài)庫

函數(shù)庫一般分為靜態(tài)庫和動態(tài)庫兩種

  • 靜態(tài)庫是指編譯鏈接時,把庫文件的代碼全部加入到可執(zhí)行文件中,因此生成的文件比較大,但在運行時也就不再需要庫文件了。其后綴名一般為“.a”
  • 動態(tài)庫與之相反,在編譯鏈接時并沒有把庫文件的代碼加入到可執(zhí)行文件中,而是在程序執(zhí)行時由運行時鏈接文件加載庫,這樣可以節(jié)省系統(tǒng)的開銷。動態(tài)庫一般后綴名為“.so”

動態(tài)鏈接:

優(yōu)點:省空間(磁盤的空間,內(nèi)存的空間),bin體積小,加載速度快。
缺點:依賴動態(tài)庫,程序可移植性較差。
?
靜態(tài)鏈接:

優(yōu)點:不依賴第三方庫,程序的可移植性較高。
缺點:浪費空間。

gcc和g++默認生成的二進制程序是動態(tài)鏈接的,可以使用file指令查看。


還可以使用ldd指令查看動態(tài)鏈接的可執(zhí)行文件所依賴的庫

gcc選項

  • -E 只進行預(yù)處理,這個不生成文件,你需要把他重定向到一個輸出文件里面(否則將把預(yù)處理后的結(jié)果打印到屏幕上)。
  • -S 編譯到匯編語言,不進行匯編和鏈接,即只進行預(yù)處理和編譯。
  • -c 編譯到目標(biāo)代碼
  • -o 將處理結(jié)果輸出到指定文件,該選項后需緊跟輸出文件名。
  • -static 此選項對生成的文件采用靜態(tài)鏈接。
  • -g 生成調(diào)試信息(若不攜帶該選項則默認生成release版本)。
  • -shared 此選項將盡量使用動態(tài)庫,生成文件較小。
  • -w 不生成任何警告信息。
  • -Wall 生成所有警告信息。
  • -O0/-O1/-O2/-O3 編譯器優(yōu)化選項的四個級別,-O0表示沒有優(yōu)化,-O1為缺省值,-O3優(yōu)化級別最高。

Linux調(diào)試器 - gdb

背景知識

  • 程序的發(fā)布方式有兩種,debug模式和release模式
  • Linux gcc/g++出來的二進制程序,默認是release模式
  • 要使用gdb調(diào)試,必須在源代碼生成二進制程序的時候, 加上 -g 選項

gdb命令匯總

進入gdb

指令: gdb?文件名

調(diào)試

1)「run/r」:運行代碼(啟動調(diào)試)。
2)「next/n」:逐過程調(diào)試。
3)「step/s」:逐語句調(diào)試。
4)「until?行號」:跳轉(zhuǎn)至指定行。
5)「finish」:執(zhí)行完當(dāng)前正在調(diào)用的函數(shù)后停下來(不能是主函數(shù))。
6)「continue/c」:運行到下一個斷點處。
7)「set?var?變量=x」:修改變量的值為x。

顯示

1)「list/l?n」:顯示從第n行開始的源代碼,每次顯示10行,若n未給出則默認從上次的位置往下顯示.。
2)「list/l?函數(shù)名」:顯示該函數(shù)的源代碼。
3)「print/p?變量」:打印變量的值。
4)「print/p?&變量」:打印變量的地址。
5)「print/p?表達式」:打印表達式的值,通過表達式可以修改變量的值。
6)「display?變量」:將變量加入常顯示(每次停下來都顯示它的值)。
7)「display?&變量」:將變量的地址加入常顯示。
8)「undisplay?編號」:取消指定編號變量的常顯示。
9)「bt」:查看各級函數(shù)調(diào)用及參數(shù)。
10)「info/i?locals」:查看當(dāng)前棧幀當(dāng)中局部變量的值。

斷點

1)「break/b?n」:在第n行設(shè)置斷點。
2)「break/b?函數(shù)名」:在某函數(shù)體內(nèi)第一行設(shè)置斷點。
3)「info?breakpoint/b」:查看已打斷點信息。
4)「delete/d?編號」:刪除指定編號的斷點。
5)「disable?編號」:禁用指定編號的斷點。
6)「enable?編號」:啟用指定編號的斷點。

退出gdb

1)「quit/q」:退出gdb。

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

make/Makefile的重要性

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

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

依賴關(guān)系:

文件A的變更會影響到文件B,那么就稱文件B依賴于文件A。

例如,test.o文件是由test.c文件通過預(yù)處理、編譯以及匯編之后生成的文件,所以test.c文件的改變會影響test.o,所以說test.o文件依賴于test.c文件。

依賴方法:

如果文件B依賴于文件A,那么通過文件A得到文件B的方法,就是文件B依賴于文件A的依賴方法。

例如,test.o依賴于test.c,而test.c通過gcc -c test.c -o,test.o指令就可以得到test.o,那么test.o依賴于test.c的依賴方法就是gcc -c test.c -o test.o。

應(yīng)用實例

步驟一:

在當(dāng)前目錄下創(chuàng)建一個名為Makefile/makefile的文件。


步驟二:

編寫makefile文件。


編寫完makefile文件后保存退出,然后在命令行當(dāng)中執(zhí)行make指令便可以生成可執(zhí)行程序


makefile文件的簡寫

  • $@:表示依賴關(guān)系中的目標(biāo)文件(冒號左側(cè))
  • $^:表示依賴關(guān)系中的依賴文件列表(冒號右側(cè)全部)

上文makefile文件也可簡寫成如下形式

make的工作原理

  1. make會在當(dāng)前目錄下找名字叫“Makefile”或“makefile”的文件。
  2. 如果找到,它會找文件中的第一個目標(biāo)文件(target),在上面的例子中,他會找到mytest這個文件,并把這個文件作為最終的目標(biāo)文件。
  3. 如果mytest文件不存在,或是mytest所依賴的后面的test.c文件的文件修改時間比mytest文件新,那么它就會執(zhí)行后面的依賴方法來生成mytest文件。
  4. make會一層又一層地去找文件的依賴關(guān)系,直到最終編譯出第一個目標(biāo)文件。
  5. 在尋找的過程中,如果出現(xiàn)錯誤,例如最后被依賴的文件找不到,那么make就會直接退出,并報錯。

項目清理

我們每次重新生成可執(zhí)行程序前,都應(yīng)該將上一次生成可執(zhí)行程序時生成的一系列文件進行清理,清理的指令相同,我們可以把清理的指令也添加到makefile文件中

注意:這里clean的目標(biāo)文件設(shè)置為偽目標(biāo),用.PHONY修飾,偽目標(biāo)的特性是:不管是否更新都要執(zhí)行。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/123679.html

相關(guān)文章

  • 技術(shù)選型之Docker容器引擎

    摘要:是系統(tǒng)提供的容器化技術(shù),簡稱,它結(jié)合和技術(shù)為用戶提供了更易用的接口來實現(xiàn)容器化。公司結(jié)合和以下列出的技術(shù)實現(xiàn)了容器引擎,相比于,具備更加全面的資源控制能力,是一種應(yīng)用級別的容器引擎。 showImg(https://segmentfault.com/img/bVbtPbG?w=749&h=192); 題外話   最近對Docker和Kubernetes進行了一番學(xué)習(xí),前兩天做了一次技術(shù)...

    monw3c 評論0 收藏0
  • Linux環(huán)境基礎(chǔ)開發(fā)工具使用

    摘要:環(huán)境基礎(chǔ)開發(fā)工具使用軟件包管理器的三板斧查看軟件包安裝軟件卸載軟件和互傳文件的三種模式的轉(zhuǎn)換命令模式插入模式底行模式編譯器使用函數(shù)庫調(diào)試器使用項目自動化構(gòu)建工具軟件包管理器軟件包和軟件包管理器就好比手機上的和應(yīng)用 ...

    Dean 評論0 收藏0
  • Linuxlinux環(huán)境基礎(chǔ)開發(fā)工具使用

    摘要:函數(shù)名列出某個函數(shù)的源代碼,含函數(shù)名上下各五行類比調(diào)試或從開始連續(xù)而非單步執(zhí)行程序遇到斷點停下。相當(dāng)于中的或單條執(zhí)行。 目錄 一、調(diào)試器gdb 1、可以使用gdb的可執(zhí)行文件生成 2、使用命令 1、開始調(diào)試和退出調(diào)試 2、list 3、類比vs調(diào)試 4、代碼調(diào)試三劍客 5、變量 6、斷點 二...

    dongfangyiyu 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<