新聞中心
linux系統(tǒng)內(nèi),C語(yǔ)言程序的執(zhí)行步驟主要有如下4個(gè):

網(wǎng)站設(shè)計(jì)制作過(guò)程拒絕使用模板建站;使用PHP+MYSQL原生開(kāi)發(fā)可交付網(wǎng)站源代碼;符合網(wǎng)站優(yōu)化排名的后臺(tái)管理系統(tǒng);網(wǎng)站建設(shè)、成都做網(wǎng)站收費(fèi)合理;免費(fèi)進(jìn)行網(wǎng)站備案等企業(yè)網(wǎng)站建設(shè)一條龍服務(wù).我們是一家持續(xù)穩(wěn)定運(yùn)營(yíng)了10余年的創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司。
1. 源碼文件的編譯
在Linux系統(tǒng)中編寫(xiě)的C語(yǔ)言程序,都是以文本文件的形式存儲(chǔ)的,默認(rèn)擁有`.c`后綴,如: hello.c。我們可以使用gcc工具(GNU Compiler Collection,GCC庫(kù)是GNU提供的一個(gè)C編譯系統(tǒng))進(jìn)行源碼文件的編譯,如下所示:
“`bash
gcc hello.c -o hello
上述參數(shù)代表編譯hello.c,并將生成的文件重命名為hello。該命令會(huì)生成一個(gè)可執(zhí)行程序文件hello;
2. 動(dòng)態(tài)鏈接
在上一步中,編譯程序已經(jīng)生成了一個(gè)可執(zhí)行程序,該程序還是依賴于其它一些系統(tǒng)函數(shù)庫(kù)的,我們可以使用ld工具(GNU的符號(hào)鏈接器)進(jìn)行動(dòng)態(tài)鏈接,如下所示:
```bash
ld hello -dynamic-linker /lib/ld-linux.so.2
上述參數(shù)代表鏈接hello,并動(dòng)態(tài)鏈接到/lib/ld-linux.so.2,該命令使我們生成的可執(zhí)行程序能夠依賴其它函數(shù)庫(kù),形成可執(zhí)行文件;
3. 地址重定位
動(dòng)態(tài)鏈接后的程序包含著多個(gè)段,而且這些段的虛擬地址的位置也有可能不正確,因此我們可以利用重定位工具進(jìn)行地址重定位(rdynamic),指定段在內(nèi)存中的有效地址,如下所示:
“`bash
rdynamic hello -dynamic-base 0x80
這樣,指定的段就會(huì)按照0x80來(lái)進(jìn)行地址重定位;
4. 程序的執(zhí)行
最后就是程序的執(zhí)行了,我們需要使用exec系統(tǒng)調(diào)用來(lái)加載并運(yùn)行程序,如下所示:
```c
exec("hello");
這樣,在Linux系統(tǒng)下就可以執(zhí)行C語(yǔ)言程序了。
總之,要正確的執(zhí)行C語(yǔ)言程序,我們必須按照以上4個(gè)步驟,首先對(duì)源文件進(jìn)行編譯,然后進(jìn)行動(dòng)態(tài)鏈接,接著進(jìn)行地址重定位,最后使用exec系統(tǒng)調(diào)用來(lái)執(zhí)行程序。綜上所述,上述4個(gè)步驟就是Linux系統(tǒng)下C語(yǔ)言程序的執(zhí)行步驟。
創(chuàng)新互聯(lián)服務(wù)器托管擁有成都T3+級(jí)標(biāo)準(zhǔn)機(jī)房資源,具備完善的安防設(shè)施、三線及BGP網(wǎng)絡(luò)接入帶寬達(dá)10T,機(jī)柜接入千兆交換機(jī),能夠有效保證服務(wù)器托管業(yè)務(wù)安全、可靠、穩(wěn)定、高效運(yùn)行;創(chuàng)新互聯(lián)專注于成都服務(wù)器托管租用十余年,得到成都等地區(qū)行業(yè)客戶的一致認(rèn)可。
本文題目:Linux下C語(yǔ)言程序的執(zhí)行步驟(linux執(zhí)行c文件)
轉(zhuǎn)載注明:http://fisionsoft.com.cn/article/dhisccc.html


咨詢
建站咨詢
