中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

【Linux操作系統(tǒng)】程序的編譯和動靜態(tài)鏈接-創(chuàng)新互聯(lián)

文章目錄
  • 一.編譯
    • 寫在前面
    • 1.預處理
    • 2.編譯
    • 3.匯編
  • 二.(動靜態(tài))鏈接
    • 1.動態(tài)鏈接
    • 2.靜態(tài)鏈接
    • 3.靜態(tài)鏈接庫的下載安裝
    • 4.windows下動靜態(tài)庫的后綴

成都創(chuàng)新互聯(lián)公司主營貢覺網(wǎng)站建設的網(wǎng)絡公司,主營網(wǎng)站建設方案,重慶APP開發(fā)公司,貢覺h5小程序定制開發(fā)搭建,貢覺網(wǎng)站營銷推廣歡迎貢覺等地區(qū)企業(yè)咨詢一.編譯 寫在前面

編譯這整個過程都只是在編譯你自己寫的代碼,直到鏈接才讓你的代碼和庫的代碼關聯(lián)起來,最終形成可執(zhí)行程序

源程序到可執(zhí)行程序的整個過程: ESc-iso
在這里插入圖片描述

1.預處理

預處理四大任務:頭文件展開,去注釋宏替換條件編譯

gcc test.c -E -o test.i

-E:開始翻譯,并且在預處理后停下來

-o:指明形成臨時文件的名稱

image-20230105233743972

通過這里我們可以看到預處理后還是C語言代碼,預處理完成的只是文本操作!

ps:這里不帶-o是不行的,程序停下來后會將預處理后的文件內容直接打印到終端

image-20230105233942235

通過-o生成的.i文件我們可以清晰的看到頭文件展開后的結果是一堆函數(shù)和變量的聲明,并沒有函數(shù)的具體實現(xiàn)!

.h(頭文件)中只包含函數(shù)的聲明,函數(shù)的具體實現(xiàn)在標準庫里

頭文件存在的大意義:

1.提供函數(shù)的聲明

2.自動補全代碼

image-20230105235825189

2.編譯

編譯是將C語言代碼翻譯成匯編代碼

gcc -S test.c -o test.s
3.匯編

匯編是將匯編代碼翻譯成二進制代碼

gcc -c test.c -o test.o

匯編完成后得到二進制代碼,但是這并不能被執(zhí)行,因為編譯這整個過程都只是在編譯你自己寫的代碼,直到鏈接才讓你的代碼和庫的代碼關聯(lián)起來,最終形成可執(zhí)行程序.

image-20230106000407273

二.(動靜態(tài))鏈接

鏈接的目的:把自己寫的并且編譯好的二進制代碼和庫里的二進制代碼關聯(lián)起來,形成可執(zhí)行程序!

image-20230106002029115

1.動態(tài)鏈接

動態(tài)鏈接方式:在運行時需要去標準庫里找函數(shù)的實現(xiàn)

優(yōu)點:形成的可執(zhí)行程序體積小

缺點:依賴動態(tài)庫,易收到動態(tài)庫丟失等原因出現(xiàn)運行時錯誤!

gcc test.c -o test//Linux-默認是動態(tài)鏈接的鏈接方式
file 可執(zhí)行程序
ldd 可執(zhí)行程序
//在linux中, ldd是list dynamic dependencies的縮寫, 意思: 列出動態(tài)庫依賴關系

image-20230106002356805

dynamically linked (uses shared libs)//動態(tài)鏈接方式(共享庫)
libc.so.6 =>/lib64/libc.so.6 (0x00007f86cd306000)//動態(tài)庫->位置(代碼地址)
2.靜態(tài)鏈接

靜態(tài)鏈接方式:在鏈接時直接將函數(shù)的實現(xiàn)拷貝一份到我的程序中,運行時不用找!

優(yōu)點:不依賴第三方庫

缺點:形成的可執(zhí)行程序體積大

gcc test.c -o test -static//指明采用靜態(tài)鏈接的鏈接方式
file test

image-20230106002708957

statically linked//靜態(tài)鏈接方式
3.靜態(tài)鏈接庫的下載安裝

動態(tài)庫一般系統(tǒng)自帶,因為系統(tǒng)運行時需要用到動態(tài)庫

靜態(tài)庫在Linux中一般要自行安裝

sudo yum install glibc-static//安裝C靜態(tài)庫
sudo yum install libstdc++-static//安裝c++靜態(tài)庫
gcc test.c -o test -static//生成靜態(tài)程序test
4.windows下動靜態(tài)庫的后綴
windows下動靜態(tài)庫的后綴:
動態(tài)庫:.dll
靜態(tài)庫:.lib

你是否還在尋找穩(wěn)定的海外服務器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調度確保服務器高可用性,企業(yè)級服務器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧

網(wǎng)頁名稱:【Linux操作系統(tǒng)】程序的編譯和動靜態(tài)鏈接-創(chuàng)新互聯(lián)
本文URL:http://www.rwnh.cn/article48/copihp.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供ChatGPT用戶體驗、小程序開發(fā)標簽優(yōu)化、建站公司品牌網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

h5響應式網(wǎng)站建設
顺昌县| 遵义县| 隆安县| 道真| 蕲春县| 武胜县| 沾益县| 商南县| 汾西县| 柯坪县| 平顶山市| 东乡族自治县| 英德市| 吉木萨尔县| 理塘县| 太仓市| 南汇区| 田阳县| 涿鹿县| 沙田区| 思南县| 武定县| 茂名市| 原平市| 东安县| 昭通市| 滦南县| 伊宁县| 花垣县| 遂昌县| 南城县| 安庆市| 桃园县| 达尔| 永泰县| 靖江市| 五家渠市| 阳曲县| 阿拉善右旗| 响水县| 海门市|