日韩天堂,国产精品久久久久久久久久一区,羞羞羞网站,自拍视频网站,久久亚洲欧美成人精品,桃花阁成人网在线观看

Hello! 歡迎來到小浪云!


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


avatar
小浪云 2025-04-17 41

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

今日分享就到這里了。

相關閱讀

主站蜘蛛池模板: 亚洲欧美一区二区三区另类 | 国内精品久久久久影院中国 | 久久精品大片 | 免费a网 | 亚洲综合免费视频 | 中文字幕在线永久视频 | 久久亚洲日本不卡一区二区 | 中文字幕不卡一区 二区三区 | 综合色影院 | 国产黄网 | 在线看视频的网站入口 | 九九亚洲精品 | 亚洲第一视频网 | 五月婷婷六月综合 | 日韩欧美亚洲国产精品字幕久久久 | 自拍网址 | 99精品热线在线观看免费视频 | 在线免费色 | 欧美视频在线观看一区二区 | 国产 日韩 欧美 综合 | 婷婷爱五月天 | 综合激情五月婷婷 | 在线91精品亚洲网站精品成人 | 怡春院欧美一区二区三区免费 | 久久精品一区二区 | 伊人无码高清 | 国产成人亚洲精品大帝 | 国产综合视频在线 | 中文国产成人精品久久水 | 亚洲国产精品免费 | 性盈盈影视院 | 婷丁四月 | 亚洲精品天堂自在久久77 | 国产精品视频免费的 | 欧美αv日韩αv亚洲αv在线观看 | 亚洲午夜精品久久久久久app | 男人天堂导航 | 国产精品久久久久久久 | 五月激情丁香 | 性色视频在线 | 久久国产高清字幕中文 |