欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Linux下將源文件編譯成目標(biāo)文件的過程解析

 更新時間:2018年02月03日 14:17:03   作者:Senvenno27  
這篇文章主要介紹了Linux下將源文件編譯成目標(biāo)文件的過程解析,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下

簡介

請講一下linux如何源文件逐步編譯成可執(zhí)行文件。

解答

首先先上圖對編譯的整個過程有個感性的認(rèn)識,然后再逐步分析各個過程。

以hello.c 程序為例

# include <stdio.h>
main{
  printf("hello\n");
}

一個.c源程序需要經(jīng)過預(yù)處理器生成.i文件,再經(jīng)過編譯器生成.s文件,再經(jīng)過匯編器生成可重定位目標(biāo)文件.o文件,再與其他.o文件經(jīng)過鏈接器生成最終的可執(zhí)行目標(biāo)程序。

預(yù)處理階段。主要是處理源文件中以“#”開頭的預(yù)編譯指令。

刪除#define并展開宏

處理所有條件預(yù)編譯指令,如#if, #ifdef, #endif

插入頭文件到“#include”處

刪除所有注釋

添加行號和文件名標(biāo)識,以便編譯時編譯器產(chǎn)生調(diào)試用的行號信息

保留所有#pragma編譯指令。

編譯階段。將預(yù)處理得到的預(yù)處理文件進(jìn)行語法分析,詞法分析,語義分析,優(yōu)化后,生成匯編代碼文件(匯編語言源程序)。

匯編階段。利用匯編程序(匯編器)將匯編語言源程序轉(zhuǎn)換成機(jī)器指令序列(機(jī)器語言程序)。

鏈接階段。將多個可重定位的目標(biāo)文件.o合并以生成可執(zhí)行文件,其可以被加載到內(nèi)存中,由系統(tǒng)執(zhí)行。

總結(jié)

以上就是本文關(guān)于Linux下將源文件編譯成目標(biāo)文件的過程解析的全部內(nèi)容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!

相關(guān)文章

  • Linux下gdb調(diào)試打印字符串方式

    Linux下gdb調(diào)試打印字符串方式

    這篇文章主要介紹了Linux下gdb調(diào)試打印字符串方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • Xshell連接不上虛擬機(jī)的解決辦法匯總

    Xshell連接不上虛擬機(jī)的解決辦法匯總

    本文主要介紹了Xshell連接不上虛擬機(jī)的解決辦法匯總,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • apache設(shè)置自動將http跳轉(zhuǎn)到https的方法

    apache設(shè)置自動將http跳轉(zhuǎn)到https的方法

    客戶中心啟用了https的ssl證書,現(xiàn)在需要將原先的http直接跳轉(zhuǎn)到https上。這里為大家提供一個我經(jīng)常使用到的方法,即使用偽靜態(tài)功能
    2013-02-02
  • 阿里云ECS服務(wù)器入門使用流程(新手必看教程)

    阿里云ECS服務(wù)器入門使用流程(新手必看教程)

    這篇文章主要介紹了阿里云ECS服務(wù)器入門使用流程(新手必看教程),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • v2rayN的延遲是-1的問題解決方法

    v2rayN的延遲是-1的問題解決方法

    這篇文章主要為大家詳細(xì)介紹了v2rayN的延遲是-1的問題解決方法,本文通過了相關(guān)示例圖片進(jìn)行了詳細(xì)的講解,需要的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-08-08
  • CentOS中的正則表達(dá)式

    CentOS中的正則表達(dá)式

    這篇文章主要介紹了CentOS中的正則表達(dá)式 ,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2018-04-04
  • linux?scp免密傳輸、ssh免密登陸方式

    linux?scp免密傳輸、ssh免密登陸方式

    這篇文章主要介紹了linux?scp免密傳輸、ssh免密登陸方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • 阿里云云服務(wù)器Linux系統(tǒng)掛載數(shù)據(jù)盤圖文教程

    阿里云云服務(wù)器Linux系統(tǒng)掛載數(shù)據(jù)盤圖文教程

    這篇文章主要介紹了阿里云云服務(wù)器Linux系統(tǒng)掛載數(shù)據(jù)盤圖文教程,阿里云服務(wù)器一般需要購買額外的數(shù)據(jù)盤,本文就講解如何掛載使用額外的數(shù)據(jù)盤,需要的朋友可以參考下
    2014-09-09
  • vmware中CentOS7網(wǎng)絡(luò)設(shè)置教程詳解

    vmware中CentOS7網(wǎng)絡(luò)設(shè)置教程詳解

    這篇文章主要為大家詳細(xì)介紹了vmware中CentOS7網(wǎng)絡(luò)設(shè)置教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • linux查看端口是否開放的方法總結(jié)

    linux查看端口是否開放的方法總結(jié)

    在本篇文章里小編給大家整理了關(guān)于linux查看端口是否開放的方法和相關(guān)知識點,需要的朋友們跟著學(xué)習(xí)下。
    2019-03-03

最新評論