深入理解嵌入式程式鏈結過程

2021-08-18 17:59:54 字數 342 閱讀 8686

1.鏈結就是將彙編生成的obj檔案,系統庫的obj檔案,庫鏈結起來,最終生成可以在特定平台

執行的可執行程式。

2.用  gcc -v -o hellow hellow.c詳細檢視所有編譯過程

3.系統標準啟動檔案,對一般的應用程式來說,這些是必須的。

4.nostdlib不連線系統標準檔案和啟動檔案.

用於裸機  bootloader等程式 這些程式不需要啟動檔案  也不需要標準啟動檔案

而應用程式需要

5.使用ldd檢視程式依賴哪些庫檔案

6.    .so   .a

動態庫    靜態庫

-static  表示靜態鏈結

深入理解靜態鏈結的過程

靜態鏈結的過程 各個檔案之間都是單獨編譯的。編譯生成可重定位目標檔案後,目標檔案格 式也是elf可執行檔案格式但是並不能執行 根本原因是在編譯的時候目標檔案並沒有分配虛擬位址 原因如下 如果是定義在本檔案的函式和變數編譯器可以為它分配位址,但是如果當前的原始檔引用其他檔案的函式或者是全域性變數,這個...

理解程式編譯預處理與鏈結過程

首先熟悉一些預處理識別符號 file 進行編譯的檔案 line 檔案當前行號 使用預處理器將巨集引數轉換成乙個字串 將位於它兩邊的符號連線成乙個符號。示例 file 用linux指令來觀察它的預處理結果和最後輸出的結果 include int main line date time 也是同理,因此將...

深入理解預編譯,編譯,彙編,鏈結的過程 之鏈結

我們接觸程式的時候,一般編譯和鏈結是一起做的,所以不容易看到編譯和鏈結的不同,這裡我們講一下編譯和鏈結的區別。範例1 main.c int main 對main.c生成執行檔案 gcc o main main.c 生成可執行檔案main 沒有字尾名 這個檔案什麼也不幹,但是可以執行。gcc o的過程...