Linux系統編程-gcc(黑馬筆記)

1 gcc的編譯流程

gcc編譯的整個過程并且整個過程下來的每個過程。并且給出了每個階段產物和gcc命令。

1.1 數據段合并

其實就是因為“塊” 一次是讀多個字節而不是一個字節,所以會將一些地址段合并從而提升效率

1.2 地址回填

這張圖也有些問題,正確的結論是:

地址回填發生在編譯器后端生成匯編/機器碼時,屬于 .c → .o 過程中的代碼生成步驟

地址回填:其實就是在最后的鏈接過程中將main函數的真實地址更改掉

以下為一個示例,其他過程同理。

gcc -c test.c -o test.0

鏈接命令 -o可以指定輸出的文件名

gcc  [目標文件列表]  [庫選項]  -o  輸出可執行文件名
gcc  main.o  utils.o  -o  app

2 gcc的常用命令

2.1linux中c++函數常用的一種寫法,可以用來給main函數傳遞參數

int main(int argc, char *argv[])
{printf("argc = %d\n", argc);return 0;
}
  1. argc參數的個數(argument count),包括程序名本身。

  2. argv 不是“統計字符”,而是一個 字符串指針數組(argument vector),每個元素是一個 C 字符串(char *),指向一個 以空字符 \0 結尾的參數

    • argv[0] → 程序名或啟動路徑

    • argv[1] → 第一個用戶參數

    • argv[argc] → 固定為 NULL,作為哨兵。

  3. 分隔規則

    • 默認由shell按**空白字符(空格、Tab、換行)**切分。

    • 如果參數本身含空格,用引號(單或雙)或反斜杠 \ 轉義即可保持為一個整體。

./hello  one   "two words"  three
  • argc = 4

  • argv 內容為

  • argv[0] = "./hello"
    argv[1] = "one"
    argv[2] = "two words"
    argv[3] = "three"
    argv[4] = NULL

2.2 gcc指定頭文件目錄

當頭文件和源文件不在同一個目錄時候可以用以下命令

其中頭文件在./inc 文件夾下

gcc -I./inc hello.c -o hello

2.3 常見參數

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

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

相關文章

Git踩坑

文章目錄前言?問題分析:為什么你的提交會“覆蓋”別人的代碼?? 正確的代碼提交流程(結合你原文的說明)**1. 確認自己在正確的分支上****2. 從主開發分支(如 dev)拉取最新代碼并合并****3. 解決沖突&#…

sqli-labs:Less-20關卡詳細解析

1. 思路🚀 本關的SQL語句為: $sql"SELECT * FROM users WHERE username$cookee LIMIT 0,1";注入類型:字符串型(單引號包裹)、GET操作提示:參數需以閉合關鍵參數:cookee php輸出語句…

基于LevitUnet的超聲圖像分割

完整項目包獲取:點擊文末名片本項目旨在開發一個基于深度學習的圖像分割模型,專門用于處理醫學或遙感領域的圖像數據(以 TIFF 格式存儲)。通過結合 LeViT(基于 Vision Transformer 的輕量模型)和 U-Net 架構…

Java 17 新特性解析與代碼示例

Java 17 新特性解析與代碼示例 文章目錄Java 17 新特性解析與代碼示例引言1. 密封類(JEP 409)1.1. 介紹1.2. 詳細說明1.3. 代碼示例1.4. 與之前功能的對比1.5. 使用場景1.6. 總結2. switch 模式匹配(預覽,JEP 406)2.1.…

SQL中的GROUP BY用法

GROUP BY 是 SQL 中用來“按列分組”的子句。 它把相同值的行分到同一個組,然后通常配合聚合函數(COUNT, SUM, AVG, MAX, MIN 等)對每個組做統計,最終每組只返回一行結果。? 1. 基本語法 SELECT 列1, 列2, 聚合函數(列3) FROM 表…

AI Agent開發學習系列 - LangGraph(10): 帶有循環的Looping Graph(練習解答)

在AI Agent開發學習系列 - LangGraph(9): 帶有循環的Looping Graph中,我們學習了如何創建帶有循環的Looping Graph。為了鞏固學習,我們來做一個練習。 用LangGraph創建如下圖的一個Agent: 要求: 輸入玩家姓名通過輸入的上限值和下限值之間…

【保姆級 - 大模型應用開發】DeepSeek R1 本地部署全攻略:Ollama + vLLM + PyTorch 多選方案

DeepSeek R1 本地部署全攻略:Ollama vLLM PyTorch 多選方案 想部署 DeepSeek-R1 模型到本地,開啟高性能推理體驗?本文匯總了 Ollama、vLLM 及原生 PyTorch 的部署方法,適合不同開發者需求。 🎯 下載模型 (必做) ----…

使用 Vive Tracker 替代 T265 實現位姿獲取(基于 Ubuntu + SteamVR)

在Dexcap這篇工作列出第二版硬件清單時,我注意到其使用 Vive Tracker 替代 Intel T265 來獲取位姿數據,對這個東西的性能感到好奇,最近因為需要跟進相關工作,參與了一部分實現,由于這方面的中文資料相對較少&#xff0…

博物館 VR 導覽:圖形渲染算法+智能講解技術算法實現及優化

本文面向博物館數字化開發技術員、VR 系統工程師等技術同仁們,聚焦圖形渲染算法在博物館 VR 導覽中的核心應用,解決虛擬展館還原精度不足、多終端適配卡頓、智能講解觸發延遲等實際技術問題。如有項目合作及技術交流歡迎私信作者~一、VR導覽技術痛點1.3D…

zset 中特殊的操作

首先 zset 與我們常規的 redis 操作有所不同, 這里的時間復雜度基本都是 O(log N) 起步的 目錄 1. zcount 2. zpopmax 1. zcount zcount key min max : 這里求的是 key 中下標在 min 和 max 之間的 元素的數量, 這里是比區間 我們要是想排除端點, 就需要加上 ( , 無論是…

KSP與ASM深度對比:原理、性能與使用場景

一、核心目的差異1. KSP(Kotlin Symbol Processing)核心目的:在編譯時生成新代碼,解決樣板代碼問題(操作對象:.kt源文件編譯過程中的中間表示)主要場景:自動生成DI(依賴注入)配置代碼創建路由映…

【LLM】如何在Cursor中調用Dify工作流

這篇文章將通過一個接口文檔知識庫示例,帶你了解如何在 Cursor 中通過 Mcp Server 調用 Dify 平臺配置的工作流。 1. 準備工作 需要準備文本生成模型、向量模型、Rerank 模型(可選),這些都可以在 阿里云百煉平臺 申請免費使用額度…

L1、L2正則化的幾何解釋

L2正則化: 圖中用幾何方式形象地解釋了 Ridge 回歸(L2正則化)的原理。 ① 陰影圓:可以理解為(w1^2 w2^2)?≤R^2,圓周表示目標函數的約束線,這個圓表示了我們的參數 (w1,w2)可以活動的范圍。 …

【學習筆記】Java并發編程的藝術——第1章 并發編程的挑戰

第1章 并發編程的挑戰 1.1 上下文切換 即使是單核處理器也支持多線程執行代碼,CPU給每個線程分配CPU時間片實現多線程,而每個時間片一般是幾十毫秒,所以多個線程感覺是同時執行的 但同一個核切換線程執行時會保存運行狀態,以便下次…

leecode3 無重復元素的最長子串

我的思路 原始代碼 我發現我雖然解決問題了,但是我的思路不簡潔,不明白。 這個題本質上還是滑動窗口的問題。 具體思路為先定義兩個指針,對應滑動窗口的兩個邊界關鍵是:定義一個集合,來判斷這個窗口中的元素是否存在重…

【嵌入式匯編基礎】-ARM架構基礎(三)

ARM架構基礎(三) 文章目錄 ARM架構基礎(三) 7、AArch64 執行狀態 7.3 程序計數器 7.4 堆棧指針 7.5 零寄存器 7.6 鏈接寄存器 7.7 幀指針 7.8 平臺寄存器 (x18) 7.9 過程內調用寄存器 7.10 SIMD 和浮點寄存器 7.11 系統寄存器 7.13 PSTATE 7、AArch64 執行狀態 7.3 程序計…

[buuctf-misc]喵喵喵

m題目在線評測BUUCTF 是一個 CTF 競賽和訓練平臺,為各位 CTF 選手提供真實賽題在線復現等服務。https://buuoj.cn/challenges#%E5%96%B5%E5%96%B5%E5%96%B5BUUCTF 是一個 CTF 競賽和訓練平臺,為各位 CTF 選手提供真實賽題在線復現等服務。https://buuoj.…

Vue 詳情模塊 2

Vue 漸進式JavaScript 框架 基于Vue2的移動端項目:詳情基礎內容,日期及電影描述 目錄 詳情 詳情基礎內容 初始化與賦值 渲染基礎內容 詳情樣式 日期處理 安裝moment 定義過濾器 使用過濾器 電影描述 總結 詳情 詳情基礎內容 初始化與賦值 …

【MODIS數據】MYD03

🌍 遙感數據的“導航儀”:深入解析MYD03地理定位產品 在衛星遙感領域,精確的地理定位是數據應用的基礎。作為Aqua衛星中分辨率成像光譜儀(MODIS)的核心支撐產品,MYD03雖不如地表溫度或植被指數產品知名&am…

如何填寫PDF表格的例子

實際應用場景中,我們會遇到需要根據會話內容自動填寫表格的情況,比如:pdf 表格。假設根據會話內容已經獲得相關信息,下面以填寫個人信息為例來說明。個人信息表格.pdf填寫后的效果:填寫代碼如下:from pdfrw…