色偷偷91综合久久噜噜-色偷偷成人-色偷偷尼玛图亚洲综合-色偷偷人人澡久久天天-国内精品视频一区-国内精品视频一区二区三区

Hello! 歡迎來到小浪云!


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


avatar
小浪云 2025-04-17 20

四、安裝工具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會更規范,不會遇到痛苦的地方。

今日分享就到這里了。

相關閱讀

主站蜘蛛池模板: 国产成人v视频在线观看 | 久久狠狠色噜噜狠狠狠狠97 | 亚洲性久久 | 欧美日韩在线一区二区三区 | 天天舔 | 国产成人久久久精品一区二区三区 | 在线欧美精品二区三区 | 511yc午夜精品福利 | 看黄色的应用 | 伊人久久精品一区二区三区 | 亚洲欧美另类久久久精品能播放的 | 四虎播放| 一级毛片a女人刺激视频免费 | 久久综合色之久久综合 | 精品一区二区三区中文 | 又黄又乳又污又色又爽 | 国产九九免费视频 | 日本伊人色综合网 | 天天躁夜夜躁 | 韩国免费a级毛片 | 国产精品jizz视频 | 精品国产成人在线 | 日韩一区二区三区四区不卡 | 免费看全黄特黄毛片 | 免费的毛片网站 | 99精品视频观看 | 日本成人午夜 | 在线视频久 | 色狠狠一区 | 日韩激情小说 | 一本之道一区三区 | 伊人久久大香线蕉综合热线 | 亚洲天堂2013 | 色噜噜噜噜色 | 天天干天天干天天 | 久久久久综合中文字幕 | 四虎国产精品免费视 | 亚洲国产精品一区二区九九 | 午夜欧美精品久久久久久久久 | 狠久久 | 成 人 黄 色 小说免费观看极 |