c,c++編譯過程

      網友投稿 802 2025-04-01

      #預處理,編譯,匯編,鏈接


      預處理gcc -E hello.cpp -o hello.i

      處理#include ,宏定義

      編譯gcc -S hello.i -o hello.s

      實際調用ccl

      生成匯編代碼

      匯編gcc -c hello.s -o hello.o

      生成機器指令

      鏈接ld

      靜態鏈接

      地址和空間分配,符號決議,重定位

      動態鏈接

      #目標文件格式

      目標文件分類

      可重定位文件 .o文件

      可執行文件

      共享目標文件 .so文件

      核心轉儲文件 coredump文件

      目標文件分段

      text段(程序指令)

      .data段(已經初始化值的全局變量和局部靜態變量)

      .bss段(未初始化的全局變量和局部靜態變量),沒有內容,不占空間,因為這些值默認都是0

      文件格式查看

      gcc -c hello.cpp生成hello.o

      objdump -h hello.o?查看各個段的大小,起始位置

      objdump -d -s hello.o?查看匯編代碼

      readelf -h hello.o查看文件的基本信息

      readelf -S hello.o查看文件的具體段的分布

      c,c++編譯過程

      readelf -s hello.o查看文件的變量函數

      強符號和弱符號

      初始化了的全局變量是強符號

      弱符號的使,通過 __attribute__((weak))指定此引用為弱引用,如果外部沒有定義,可以鏈接出錯,但是引用為空,如果外部有定義,正常運行,引用不為空,自己代碼可以聲明一個外部庫的弱引用,如果為空,說明運行時沒有外部庫,可以執行自己另外的邏輯,達到一定的動態化

      #靜態鏈接過程

      將每個.o文件的相同的段放在一起并合并,并根據每個文件的符號定義和引用,建立一個全局符號表

      對每個.o文件,

      根據自己在合并之后的位置,更新自己的地址為原地址加現在在合并文件中的起始地址

      讀取文件的重定位表中的每一項objdump -r a.o,在全局符號表中查找,并進行重定位

      #動態鏈接過程

      對于可共享的so文件,按照不同的段區分,數據段是每個個進程各自擁有一份,程序指令段需要編譯此so的時候就編譯為地址無關代碼,

      so編譯的具體過程是:凡是調用了本so外部的變量函數,都通過一個GOT表指針間接訪問,而GOT表是此時未初始化的,而且GOT是放在數據段的

      Program裝載這個so的時候,每個進程擁有自己的數據段和GOT,然后根據此時so的內存位置,填寫GOT,此時Program調用的so的指令部分是多個進程共享的.但是指令訪問數據函數的時候,會拿各自進程自己的GOT表,所以對數據的操作是各個進程獨立的。

      C++ 任務調度

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:Free Style】云儲存靠不靠譜?云儲存靠不靠譜?
      下一篇:比較ACID和BASE——兩種可靠的數據庫事務方法
      相關文章
      好看的亚洲黄色经典| 亚洲av永久无码一区二区三区| 亚洲情a成黄在线观看| 亚洲精品GV天堂无码男同| 亚洲中文字幕无码爆乳app| tom影院亚洲国产一区二区| 亚洲性猛交xx乱| 亚洲中文字幕久久精品无码2021| 亚洲乱码一二三四区麻豆| 亚洲国产亚洲片在线观看播放| 亚洲色偷偷av男人的天堂| 亚洲神级电影国语版| 亚洲国产成人精品无码一区二区| 亚洲天堂福利视频| 久久精品国产99国产精品亚洲| 亚洲人成在线播放| 亚洲综合无码一区二区痴汉| 亚洲乱妇熟女爽到高潮的片| 亚洲av纯肉无码精品动漫| 国产精品成人亚洲| 亚洲国产成人a精品不卡在线| 亚洲精品一级无码中文字幕| 国产亚洲?V无码?V男人的天堂| 久久久久亚洲精品天堂久久久久久| 中文亚洲成a人片在线观看| 亚洲国产一二三精品无码| 亚洲AV日韩AV高潮无码专区| 久久精品国产亚洲AV香蕉| 亚洲冬月枫中文字幕在线看| 亚洲不卡在线观看| 亚洲av无码无线在线观看| 亚洲AV综合色区无码二区爱AV| 亚洲熟妇丰满xxxxx| 国产精品亚洲专一区二区三区| 亚洲偷自拍拍综合网| 亚洲中文字幕无码不卡电影| 久久亚洲免费视频| 亚洲国产精品综合久久2007| 亚洲男人的天堂网站| 亚洲美女在线国产| 亚洲AV无码欧洲AV无码网站|