目錄
一、工具的本質
二、一些常用的工具
1.yum
2.vim
1)vim的三種基本模式:
2)vim的基本操作
①命令模式下的基本操作:
②插入模式:
③底行模式:
3)vim的配置:讓他變得更好用
3.gcc/g++的使用
基本使用方法:
編譯過程
動靜態鏈接
4.gdb命令行調試
3)調試指令
?編輯
5.初識M/makefile
補充:系統是如何得知源文件是否未被修改的?文件屬性——三個時間
總結
一、工具的本質
工具在本質上也是一種特殊的指令
二、一些常用的工具
1.yum
常用選項:
yum list | grep 軟件名:搜安指定軟件;
yum install 軟件名:安裝指定軟件;
yum remove 軟件名:卸載指定軟件
提示:yum需要root權限,故一般處于root身份或者sudo安裝
示例:安裝sl小火車
①sudo yum install -y sl或則root身份下的yun install -y sl(-y即不要過多詢問直接安裝)
②sl(運行該軟件)
如果安裝成功,屏幕中會出現如下小火車。
不知道是普通用戶還是root?可用whoami指令查看
2.vim
介紹:Linux下的一款功能強大的編輯器(功能很多的記事本……)
使用方法:vim 先打開的文件名
1)vim的三種基本模式:
①命令模式:默認打開vim進入后所處的模式;
注意:在vim中的操作須在輸入法為英語環境下進行。
②底行模式:在命令模式下,按住shift + :即可進入底行模式
注意光標在哪
在底行模式輸入q再Enter可退出vim。
③插入模式:在命令模式下按鍵盤上的i鍵進入,進入后屏幕左下角會顯示“--INSERT--”字樣
在插入模式輸入內容后,保存須在底行模式輸入w再Enter。
三種模式的切換:
命令模式+i==插入模式,插入模式按esc(鍵盤左上角)可退回命令模式;
命令模式+shit+:是底行模式,底行模式按esc(鍵盤左上角)可退回命令模式;
插入模式不能直接切換到底行模式,反之亦然,需要命令模式做中介。
畫的好丑,讀者見諒
在底行模式輸入!q再Enter可退出vim。
2)vim的基本操作
①命令模式下的基本操作:
????????光標定位:
? ? ? ? 文本編輯:
撤銷:u
撤銷撤銷:ctrl + r
②插入模式:
按期望編寫文件即可
③底行模式:
3)vim的配置:讓他變得更好用
3.gcc/g++的使用
若系統未安裝gcc或者g++先安裝:sudo yum install -y gcc或sudo yum install -y g++
基本使用方法:
gcc 源文件 -o 可執行文件名;g++?源文件 -o 可執行文件名。
①若有多個源文件則在gcc/g++后跟著列出即可,中間空格‘? ’隔開;
②-o:是為生成的可執行文件命名,若無-o則默認生成a.out
編譯過程
從源文件到可執行文件經過了如下幾個步驟:
①預處理:頭文件展開,宏定義替換,去注釋,條件編譯;
②編譯:將源文件編譯為匯編語言;
③匯編:將②中匯編語言進一步翻譯為二進制機器語言;
此時的二進制文件可以被機器執行嗎?
答:不能,在我們的代碼中只有函數的調用,如pringf、scanf等,沒有他們的實現!!他們的實現在C標準庫,還需要第五步鏈接!
④鏈接:將③中的二進制代碼與庫中代碼合并鏈接最后形成可執行程序。
什么庫?干嘛的?比如printf這個函數,我們在編寫代碼時只是調用了他,卻并沒有實現,他的實現在C標準庫中,即頭文件"stdio.h"
動靜態鏈接
在編譯過程中的第五步鏈接又分為動態鏈接和靜態鏈接:
如上述生成的hello可執行程序,若用file指令:file hello,在彈出的信息中可看到Linux系統采用了動態鏈接方式(大多數系統都是默認動態鏈接)
4.gdb命令行調試
首先應該明確的是:在不同的開發環境調試的方式是不同的,但調試的思路一定是一樣的。
1)gdb的安裝:sudo yum install -y gdb
2)在Linux中gcc/g++默認生成的是release版本,若想調試應該在編譯時帶上-g,如:
這里插個題外話:為什么會有release和debug之分?
3)調試指令
5.初識M/makefile
拿上述的hello程序寫一個最簡單的makefile(在vim中編寫):
補充:系統是如何得知源文件是否未被修改的?文件屬性——三個時間
使用stat指令:stat hello可查看hello的詳細信息
其中有三個時間:
所以系統是如何得知源文件是否未被修改的呢?
總結
本篇文章主要介紹了yum、vim、gcc/g++以及gbd的基本使用方法,同時補充了程序的編譯過程和動靜態鏈接過程。筆者水平較淺薄,難免有疏忽大意的地方,若有錯誤還請讀者指出!!
文章讀完可否給筆者一個免費的贊呢,一個免費的點贊就能讓筆者高興很久哦。