九色91_成人精品一区二区三区中文字幕_国产精品久久久久一区二区三区_欧美精品久久_国产精品99久久久久久久vr_www.国产视频

Hello! 歡迎來到小浪云!


【Linux】Linux開發六大必備工具之安裝、自動化構建、調試工具


avatar
小浪云 2025-04-17 19

四、安裝工具yum

Linux系統中安裝軟件,以前需要下載源代碼并編譯成可執行文件,但這過于繁瑣。后來,常用軟件被預先編譯成軟件包,存儲在服務器上,通過包管理器(類似手機應用商店)可以輕松找到并安裝這些軟件包。yum是Linux中常用的包管理器之一。

我們可以通過命令查看當前使用的yum源。在圖中可以看到,我們使用的是華為源,因為這里使用的是華為云服務器

【Linux】Linux開發六大必備工具之安裝、自動化構建、調試工具 如果使用的是虛擬機進行開發,yum源可能會有些過時,我們可以更換yum源。只需將centos-Base.repo文件替換為新的yum源文件即可。實際上,這是在更改yum源的網址,但我們不建議手動修改網址,而是直接用現成的文件替換。

如果主機上沒有yum,可以通過以下命令下載這個“應用商店”。

五、自動化構建工具–makefile

1、makefile的使用

首先,在目錄下創建一個makefile文件。

【Linux】Linux開發六大必備工具之安裝、自動化構建、調試工具 然后使用vim打開文件,首先列出依賴關系,如圖所示,test依賴于test.o,意味著test的生成需要test.o,test.o依賴于test.s,test.s依賴于test.i,test.i依賴于test.c,clean不依賴任何文件。接著,在依賴關系的下一行用tab鍵縮進,寫明生成所需的命令。

【Linux】Linux開發六大必備工具之安裝、自動化構建、調試工具 完成makefile文件后,直接輸入make命令即可實現文件中的一鍵構建。

【Linux】Linux開發六大必備工具之安裝、自動化構建、調試工具 使用make clean命令可以清理以.iso為后綴的文件。

【Linux】Linux開發六大必備工具之安裝、自動化構建、調試工具

2、makefile的原理

(1)makefile生成可執行程序

以剛才的例子為例,當輸入make命令時,make會在當前目錄下尋找makefile/Makefile文件(大小寫不敏感,功能相同)。找到后,它會將第一個目標文件test作為最終目標。test依賴于test.o,如果test.o不存在,make會繼續查找test.o的依賴test.s,以此類推,直到找到test.c,然后逐步生成.i、.s、.o文件,最終編譯出目標文件test。如果編譯過程中遇到錯誤,make會立即退出并報錯。

如果不需要中間文件,可以簡化如下圖所示。

【Linux】Linux開發六大必備工具之安裝、自動化構建、調試工具

(2)清理makefile相關文件

在構建項目時,需要清理工程文件,clean命令用于此目的。它不依賴任何文件,因此后面沒有其他內容,命令為rm。通過make clean來清理工程文件。

(3)makefile文件機制

我們發現,執行clean需要使用make clean,而執行test只需make即可。輸入make test與make的效果相同。因此,make默認執行構建目標文件的操作,但也可以指定目標文件如make test,效果相同。除目標文件外,其他類似clean的操作需要通過make clean來執行。

make還具有保護機制,禁止在修改文件之前多次編譯。make只會在源文件的時間戳比目標文件的時間戳新時才重新編譯。時間戳的比較是通過將時間轉化為時間戳進行的。

【Linux】Linux開發六大必備工具之安裝、自動化構建、調試工具

(4)偽目標

如果想要多次編譯,可以使用偽目標機制。它可以使選定的操作始終可執行,只需在相應行前加上.PHYONY:源文件。

【Linux】Linux開發六大必備工具之安裝、自動化構建、調試工具【Linux】Linux開發六大必備工具之安裝、自動化構建、調試工具 但我們通常會使用這個保護機制,因為它能防止不必要的資源浪費。因此,在編寫makefile時,通常將.PHYONY添加到make clean之前。

【Linux】Linux開發六大必備工具之安裝、自動化構建、調試工具 原因如下:

第一,避免與文件沖突。通常,make clean用于刪除構建過程中生成的文件,如.o目標文件、可執行文件和其他臨時文件。其目的是將項目恢復到干凈狀態。如果clean不是偽目標,而項目中存在名為clean的文件,make會根據文件的時間戳判斷是否執行該目標的命令。如果clean文件比其依賴文件更新,make會認為該目標是最新的,從而不會執行make clean命令,這違背了make clean的初衷。

第二,明確執行操作的意圖。將clean定義為偽目標,明確告訴make工具,clean是一個不對應任何文件的目標,make應該始終執行其命令,而不考慮文件的存在和時間戳。

第三,保持makefile的一致性和可維護性。使用偽目標可以使makefile的行為更加可預測。對于像clean這樣的目標,我們希望它執行一個操作而不是構建一個文件,將其定義為偽目標符合其操作的性質,使makefile的邏輯更加清晰。

(5)符號代替

【Linux】Linux開發六大必備工具之安裝、自動化構建、調試工具【Linux】Linux開發六大必備工具之安裝、自動化構建、調試工具 上述兩段代碼意義相同。

符號 意義
$@ 表示規則中的目標文件
$^ 表示規則中的所有依賴文件
$ 表示規則中的第一個依賴文件

六、調試工具–gdb

1、背景

在學習c語言時,如果不是在學校學習,通常會使用VS或vscode作為第一個編譯器。以VS為例,學習過程中會學習調試功能。調試的前提是程序以debug方式發布。

【Linux】Linux開發六大必備工具之安裝、自動化構建、調試工具 程序有兩種發布方式:debug和release。通過gcc和g++編譯的程序默認是release版本。如果需要調試,就需要debug版本,在源代碼生成二進制程序時添加-g選項。在Linux中,調試工具是gdb。

2、使用

創建一個簡單的加法程序示例,用于學習C語言調試。

【Linux】Linux開發六大必備工具之安裝、自動化構建、調試工具 test是以debug版本發布的,test_r是以release版本發布的,可以明顯看出debug版本的test文件更大。

【Linux】Linux開發六大必備工具之安裝、自動化構建、調試工具 通過命令開始進入調試。

命令 縮寫 描述
break b 在程序的指定行號處設置斷點
break b 在指定的函數入口處設置斷點
info breakpoints i b 顯示當前設置的所有斷點信息
run r 開始運行程序,如果程序需要命令行參數可在其后添加
next n 執行下一行代碼,但不進入函數內部,函數調用會直接執行完
step s 執行下一行代碼,若為函數調用則進入函數內部
print p 打印變量的值
display 跟蹤顯示,每次程序暫停時都顯示該表達式的值
undisplay 取消跟蹤
backtrace bt 顯示當前的調用信息
continue c 從當前位置繼續執行程序,直到下一個斷點或程序結束
clear cl 清除指定行號的斷點
delete d 刪除指定編號的斷點
quit q 退出 GDB 調試會話
break if b if 在滿足特定條件時觸發斷點
watch 當表達式的值發生變化時,程序會暫停
info threads 顯示所有線程的信息
Thread 切換到指定的線程進行調試
list l 列出以行號為中心的上下共10行代碼
list l 列出某個函數的源代碼
finish 執行到當前函數返回,然后停下來等待命令

gdb和VS的對應表格如上所示,對應效果與VS相同。

大家盡量養成使用調試工具的習慣,這樣找bug會更規范,不會遇到痛苦的地方。

今日分享就到這里了。

相關閱讀

主站蜘蛛池模板: 亚洲免费影院 | 麻豆av一区二区三区久久 | 91视频进入 | 久久国产精品偷 | 久久久国产一区二区三区 | 一区二区三区四区国产 | 久久久久久久av | 日韩欧美不卡 | 91在线区| 日韩欧美在线观看 | 91.色 | 亚洲欧美一区二区三区视频 | 91精品久久| 国产成人精品免费视频大全最热 | 国产伦精品一区二区 | 91视频在线看 | 久久久激情视频 | 欧美成人在线网站 | 精品国产欧美日韩不卡在线观看 | 99在线免费视频 | 免费看a| 美女在线一区二区 | 国产99久久 | 欧美 日韩 中文 | 国产男人的天堂 | 国产美女一区二区三区 | 精品视频一区二区 | 精品99久久久久久 | 中文字幕免费视频 | 日韩欧美专区 | 一区二区免费 | 男人天堂色 | 亚洲 自拍 另类 欧美 丝袜 | 欧美日韩国产在线观看 | 日韩欧美亚洲 | 日韩欧美精品 | 综合九九 | 亚州毛片 | 黄在线免费观看 | 久久久久久久久久久久久久国产 | 精品久久久久一区二区国产 |