Linux常用工具使用方式

目錄

常用工具:

安裝包管理工具:

?查找含有關鍵字的軟件包

安裝軟件

安裝文件傳輸工具

安裝編輯器

C語言編譯器

C++編譯器

安裝調試器

安裝項目版本管理工具

cmake

卸載軟件

安裝jsoncpp

安裝boost庫

安裝mariadb

安裝tree(讓目錄以tree的形式進行顯示)

卸載:

編輯器vim

vim的使用

普通模式:

插入模式:

底行模式:

基本操作

復制:

粘貼:

剪切/刪除:

撤銷:

對其以及行操作

光標移動:

翻頁:

分屏:

編譯器:

編譯器進行代碼解釋的四個階段:

預處理:

編譯:

匯編:

鏈接:

鏈接:庫

庫文件

動態庫&靜態庫

動態鏈接:

靜態鏈接:

調試器:gdb

可執行程序分為兩類:

debug程序--調試版:

release程序--發布版:

程序調試操作一:

程序調試操作二:

程序調試操作三:

程序調試操作四:

程序調試操作五:

項目的自動化構建工具:make&Makefile

Makefile:

make:

Makefile的編寫規則:

make解釋規則:

預定義變量:

偽對象:

項目版本管理工具:git


常用工具:

主要分類為:安裝包管理工具(軟件商店)、編輯器、編譯器、調試器、項目自動化構建工具、項目版本管理工具、文件傳輸工具。

安裝包管理工具:

?查找含有關鍵字的軟件包

apt-cache search [關鍵字]?

安裝軟件

apt-get install [軟件名]?

安裝文件傳輸工具

apt-get install lrzsz

安裝編輯器

apt-get install vim

C語言編譯器

apt-get install gcc

C++編譯器

apt-get install g++

安裝調試器

apt-get install gdb

安裝項目版本管理工具

apt-get install git

cmake

apt-get install cmake

卸載軟件

apt-get remove [文件名]

安裝jsoncpp

apt-get install libjsoncpp-dev

安裝boost庫

apt-get install libboost-all-dev

安裝mariadb

apt-get install mariadb-server

apt-get install mariadb-client

apt-get install libmariadb-dev

安裝tree(讓目錄以tree的形式進行顯示)

apt-get install tree

卸載:

apt-get remove [軟件名]

編輯器vim

背景:

unix開發出來后,出了第一款類unix平臺編輯器vi,但是vi并不好用,因此vim出現。

vim是一個命令行編輯器,因此默認無法使用鼠標進行操作。

為了能夠使vim使用更加方便,為此設計了多種操作模式,在不同的操作模式下,相同的按鍵會有不同的作用。

vim的使用

操作模式共有12種,而寫代碼的主要只有3種。

普通模式:

是對文檔內容進行命令操作

插入模式:

對文檔內容的編輯

底行模式:

對文檔的保存以及退出操作

vim后邊更上文件名,就可以使用vim打開文件,默認處于普通模式

基本操作

a:從光標后開始插入

o:新建一行

還有大寫I A O

:????????進入底行模式

w 保存

q 退出

q! 強制退出

X 保存并退出

ESC ? ? ? ?進入普通模式

復制:

yy 復制一行 nyy從光標行開始復制n行內容

粘貼:

p np 粘貼n行剪切板內容

剪切/刪除:

dd刪除一行 ndd

x 刪除光標所在的字符

ggdG 從首行刪除到尾行

撤銷:

U 撤銷的撤銷ctrl+r

對其以及行操作

全文對齊:按照代碼風格進行縮進對齊

底行模式輸入:

gg=G 對齊

gg 光標移動到文檔首行

G 光標移動到末位一行

set number 顯示行號

光標移動:

hjkl 左下上右移動光標

w/b 以單詞左右移動

翻頁:

ctrl+f / ctrl+b 上下翻頁

分屏:

進入底行模式輸入vnew,新建一個窗口,分屏操作

ctrl+ww切屏

編譯器:

將高級語言代碼解釋成為機器可識別的指令(不同的語言有不同的編譯器)

C語言:gcc,msvc,clang.....

C++語言:g++

編譯器進行代碼解釋的四個階段:

預處理:

頭文件引用,去除注釋,宏替換...

編譯:

進行語法,語義糾錯,沒有錯誤則將代碼解釋成為匯編指令

匯編:

將匯編指令,解釋成為機器能識別的二進制指令。

鏈接:

將所有的機器代碼(不同.c生成的文件,庫文件)進行打包生成一個可執行程序

gcc編譯器常用選項:

-E 只進行預處理

-S 只進行編譯

-C 只進行匯編

-O 指定生成的文件名稱

如果gcc不跟其他選項,那么生成的就是可執行程序

gcc -E main.c -o main.i

gcc -S main.i -o main.s

gcc -C main.s -o main.o

鏈接:庫

在系統中,有一種文件叫做庫文件:是進行特定功能,提前封裝實現的函數,經過預處理,編譯,匯編,打包之后生成的一個提供給別人使用的代碼文件

庫文件

雖然也是大量的二進制代碼打包文件,但是它沒有main函數。(因為一個代碼里是不能出現兩個main函數的。)

動態庫&靜態庫

編譯器的鏈接方式:

動態鏈接:

鏈接的是動態庫,鏈接的時候,并不會將庫中函數的實現指令給程序中也復制一份,而是只記錄了一份符號表到程序中。

優點:

生成的可執行程序比較小

多個程序如果使用了相同的庫文件,,實際的庫函數代碼在內存中就會只加載一份

缺點:

運行程序的時候,需要加載庫文件,會耗費時間

多個程序加載時,都會先去掃瞄是否存在該庫。

靜態鏈接:

鏈接的是靜態庫,鏈接的時候,是將庫中具體用到的函數

優點:

運行時不依賴庫文件的存在(具體用到的代碼是存在的)

缺點:

生成的可執行程序比較大,如果多個程序都用到了同一個靜態庫中的代碼,則多個程序運行起來后,內存會存在冗余。

gcc默認鏈接方式:

動態鏈接(在同一個目錄下,有同名的動態庫文件,靜態庫文件lib.so,libc.a,這時候優先鏈接動態庫)

調試器:gdb

作用:

調試程序的運行過程,排查程序運行結果結果不符合預期的原因。

可執行程序分為兩類:

debug程序--調試版:

程序員調試程序運行的過程,調試錯誤

release程序--發布版:

測試人員測試的版本,以及交付的版本

gcc編譯器對程序進行編譯,最終生成的可執行程序,默認是release版本

然而release版程序是無法被調試的(因為程序中沒有調試符號信息,并且代碼有可能進行了優化)。

程序調試操作一:

生成debug版本程序

gcc編譯鏈接的時候

gcc -g 生成debug版本程序

程序調試操作二:

使用gdb加載程序

gdb ./main

程序調試操作三:

各種不同的調試指令

1:開始運行程序:run

2:逐步調試程序:start

3:查看調試行附近代碼:list main.c:[行號]

如until main.c:9

程序調試操作四:

next--逐過程--遇到函數則直接將函數執行完

step--逐語句--遇到函數則進入函數對函數內部進行逐步調試

程序調試操作五:

直接將代碼運行到指定行:until main.c:[行號]

程序調試操作六:

從當前調試位置,開始運行:continue

程序調試操作七:

打斷點--讓程序運行到指定位置停下來等待調試:break main.c:19 break func

程序調試操作八:

查看斷點信息:info break

程序調試操作九:

刪除斷點:delete [斷點編號(info break前方會顯示斷點編號)]

程序調試操作十:

查看調用棧 backtrace

程序運行一旦崩潰,則調用棧的棧頂函數就是當前導致程序崩潰的代碼。

程序調試操作十一:

查看變量內容 print [變量]

程序調試操作十二:

設置變量內容 print [變量]=10

程序調試操作十三:

給變量打斷點 watch

項目的自動化構建工具:make&Makefile

Makefile:

就是一個常規的文本文件,但是搭配了make就不一樣了

Makefile可以記錄項目的構建規則

然后通過make對規則進行解釋執行

make:

就是一個Makefile解釋程序,會對Makefile中記錄的規則按照一定語法規則進行解釋執行,最終完成項目的構建

make的執行,會到執行make指令所在的目錄下查找Makefile文件,找到了就執行,找不到則會報錯。

注意:Makefile文件名是固定的,可以是Makefile或者makefile。其他的都不行

Makefile的編寫規則:

[目標對象]:[依賴對象]

\t指令

make解釋規則:make會在makefile中找到第一個目標對象

1、檢測目標對象文件是否存在

有:則會檢測目標對象文件與依賴對象文件的時間關系,判斷目標是否需要重新生成(在目標文件上次生成后,源碼有沒有修改過)

沒有:則需要生成

2、如果需要生成,則會檢測依賴文件是否存在,是否需要生成因此會到下邊找尋依賴文件的生成規則,先生成依賴文件,最終依賴文件都生成后,再去生成目標文件

3、第一個目標對象文件生成后,則退出。所以要把最后想生成什么放在第一行

make解釋規則:

1、在執行make指令的目錄下,查找Makefile文件進行解釋

2、在Makefile中,找到第一個目標對象

3、根據目標與依賴的時間關系,判斷目標對象是否需要重新生成,不需要則直接退出。

4、判斷依賴對象是否需要生成。如果需要則查找依賴對象的生成規則。進行生成

5、執行指令,完成目標對象的生成后退出。

makefile中的其他簡化操作:

預定義變量:

  • $^ 當前編譯規則的所有依賴對象
  • $< 當前編譯規則中第一個依賴對象
  • $@ 當前編譯規則中的目標對象

wildcard獲取指定目錄下特定規則的文件名

patsubst對字符串進行內容替換,將.c替換為.o

偽對象:

使用PHONY聲明一個對象為偽對象

作用:分離目標對象與實際文件之間的關系

(聲明makefile中的目標對象是一個假的對象,與實際的文件沒有關系。)

這樣的話,目標對象的編譯規則中的指令無論如何都會被執行。

(為了讓一個指令不受外部文件影響,每次都執行。比如有時候.o是最新的,就會導致不會運行make,或者說外面有一個clean的文件,再使用make clean它就不知道執行什么,所以需要這樣一個設置。)

項目版本管理工具:git

項目的版本管理:說白了就是將不同提交版本的代碼給備份起來以備回滾,以及容災。

版本管理的工具種類:svn,git,......

1、克隆遠程倉庫:git clone [地址]

比如gitee的地址在:

點擊http

2、添加修改項:git add --all ./

3、提交版本:git commit -m [本次版本的備注]

4、遠程推送:git push origin master

??提示??:比如今天在a文件內提交了main1到master在b文件內也想提交main2到master,那么應該先進行pull再進行main2的提交。

git教程參考網址:

Wiki - Gitee.com幫助

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/38651.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/38651.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/38651.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

基于Java的區塊鏈數字身份認證

基于Java的區塊鏈數字身份認證 大家好&#xff0c;我是免費搭建查券返利機器人省錢賺傭金就用微賺淘客系統3.0的小編&#xff0c;也是冬天不穿秋褲&#xff0c;天冷也要風度的程序猿&#xff01;今天我們將探討基于Java的區塊鏈數字身份認證&#xff0c;這是區塊鏈技術在安全領…

潛水耳機哪個牌子好?用戶精選,這四款潛水耳機質量上乘!

在這個快節奏的時代&#xff0c;人們越來越渴望在運動中也能享受到音樂的陪伴。潛水&#xff0c;作為一種獨特的水下運動&#xff0c;自然也不例外。然而&#xff0c;并非所有的耳機都能承受水下的壓力和環境&#xff0c;這就要求我們對潛水耳機有著更高的要求。作為一名資深的…

數據庫鎖之間有哪些區別?

寫在前面: 此博客內容已經同步到我的博客網站,如需要獲得更優的閱讀體驗請前往https://mainjaylai.github.io/Blog/blog/database/lock 以下是數據庫中常用的幾種鎖類型: 1. 共享鎖(Shared Lock,S Lock) 共享鎖允許多個事務同時讀取同一資源,但不能修改該資源。其他事…

Kubernetes的發展歷程:從Google內部項目到云原生計算的基石

目錄 一、起源與背景 1.1 Google的內部項目 1.2 Omega的出現 二、Kubernetes的誕生 2.1 開源的決策 2.2 初期發布 三、Kubernetes的發展歷程 3.1 社區的成長 3.2 生態系統的壯大 3.3 重大版本和功能 3.4 多云和混合云的支持 四、Kubernetes的核心概念 4.1 Pod 4.…

hive4 從入門到精通

查詢hive 架構 準備 HDFS配置 vim $HADOOP_HOME/etc/hadoop/core-site.xml <!--配置所有節點的root用戶都可作為代理用戶--><property><name>hadoop.proxyuser.root.hosts</name><value>*</value></property><!--配置root用戶…

Jenkins接口自動化項目的工程創建

jenkins的下載安裝 jenkins下載的官網地址 https://www.jenkins.io/download/ java環境變量的配置下載 jenkins是用java語言編寫的所以要配置java環境 需要安裝java的JDK 推薦安裝JDK17(https://blog.csdn.net/wochunyang/article/details/138520209) JDK17的下載地址 ht…

HTML文本內容 轉化為純文本

public static String htmltoString(String htmlContent) { /*String htmlContent "<p class\"MsoNormal\"><span style\"font-family: 思源黑體 CN Normal;\">1、應用場景</span></p>\n" "<p class\"Ms…

加載數據到mysql并解決原始數據亂碼問題

查看linux上數據&#xff1a; 使用命令轉換編碼&#xff1a; iconv -f GBK -t UTF-8 toutiao.csv -o toutiao2.csv加載數據到mysql: load data local infile /root/toutiao2.csv INTO TABLE pdz FIELDS TERMINATED BY , LINES TERMINATED BY \r\n;

ZXL-2000砌體砂漿強度點荷儀

一、產品簡介&#xff1a; 砌體砂漿強度點荷儀&#xff08;又名&#xff1a;砂漿點荷儀&#xff09;&#xff0c;是根據GB/T50315-2000《砌體工程現場檢驗技術規程》而研制生產的。是砌體砂漿強度檢測的專用儀器&#xff0c;其特點是能在現場或試驗室直接測試&#xff0c;不影…

Java短劇系統

探索影視新體驗 &#x1f4f1;一、引言&#xff1a;短劇時代的來臨 在數字化的今天&#xff0c;我們見證了許多內容消費模式的轉變。從長篇大論的電視劇到短小精悍的短視頻&#xff0c;再到如今備受矚目的短劇&#xff0c;觀眾對于影視內容的需求越來越多元化。而短劇系統微信…

怎么選域名?

域名是互聯網上獨一無二的標識&#xff0c;它不僅是網站訪問的地址&#xff0c;更是品牌形象的重要組成部分。選擇一個好的域名至關重要&#xff0c;因為它可以影響網站的搜索引擎排名、用戶的第一印象以及品牌的長期發展。本文將提供選擇域名時需要考慮的關鍵因素和實用建議。…

vite+vue集成cesium

1、創建項目、選擇框架vuejs pnpm create vite demo_cesium 2、進入項目安裝依賴 cd demo_cesium pnpm install3、安裝cesium及插件 3、pnpm i cesium vite-plugin-cesium 4、修改vite-config.js import { defineConfig } from vite import vue from vitejs/plugin-vue impo…

【筆記】手工部署之linux中開放已安裝的mysql與tomcat端口

在需要打包的springboot項目中輸入mvn clean package 在target下面獲得jar包 進入linux中你想要該jar包存在的位置 將jar包上傳至linux中 此時在瀏覽器中輸入linux的ip地址&#xff1a;端口號/mapping路徑為404 故&#xff1a; 在linux中另開一個標簽頁 檢查mysql和tomcat已…

js條件引用

在JavaScript中&#xff0c;條件引用模塊通常涉及到在運行時根據條件判斷來決定是否加載某個模塊。這在某些情況下非常有用&#xff0c;比如在不同環境下使用不同的模塊&#xff0c;或者在某些特定條件下才需要某個模塊的功能。 以下是幾種在JavaScript中實現條件引用的方法&a…

Linux內核升級

Background wireguard 內核要求內核版本4.18以上&#xff0c;對于內核版本4.18以下&#xff0c;無法使用WireGuard。內核版本4.18以上、5.6以下&#xff0c;可以通過升級內核的方式支持WireGuard。內核5.6及以上版本已經原生支持WireGuard&#xff0c;可以直接使用原生的WireGu…

【總線】AXI4第六課時:尋址選項深入解析

大家好,歡迎來到今天的總線學習時間!如果你對電子設計、特別是FPGA和SoC設計感興趣&#xff0c;那你絕對不能錯過我們今天的主角——AXI4總線。作為ARM公司AMBA總線家族中的佼佼者&#xff0c;AXI4以其高性能和高度可擴展性&#xff0c;成為了現代電子系統中不可或缺的通信橋梁…

pip的常用命令整理|python入學必備知識

1. 什么是pip? 通俗的說&#xff1a;pip 是 Python 第三方包管理工具&#xff0c;它提供了對Python 包的查找、下載、安裝、卸載的功能。Python 3.4以上版本都自帶 pip 工具。 2. 查看系統是否安裝的pip&#xff1f; 下面這行代碼如果沒有報錯&#xff0c;則證明系統中安裝…

設計模式(實戰項目)-狀態模式

需求背景&#xff1a;存在狀態流轉的預約單 一.數據庫設計 CREATE TABLE appointment (id bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT 主鍵id,appoint_type int(11) NOT NULL COMMENT 預約類型(0:線下查房...),appoint_user_id bigint(20) NOT NULL COMMENT 預約人…

實現膠囊神經網絡,識別手寫MNIST數據集,談談實現及理解。

&#x1f3c6;本文收錄于《CSDN問答解答》專欄&#xff0c;主要記錄項目實戰過程中的Bug之前因后果及提供真實有效的解決方案&#xff0c;希望能夠助你一臂之力&#xff0c;幫你早日登頂實現財富自由&#x1f680;&#xff1b;同時&#xff0c;歡迎大家關注&&收藏&…

稀疏數組Java練習代碼含IO

是在學習尚硅谷的數據結構與算法Java課程&#xff0c;課后自己憑借思路寫的練習代碼 首先定義一個稀疏數組類 import java.io.*; import java.util.Objects;public class SparseArray {int sum;//創建原始數組public int[][] createArray(int column, int row){//根據傳入數據…