目标指令c语言是什么,什么是C中的目标文件?
有3種目標(biāo)文件。
可重定位目標(biāo)文件
以可以在鏈接時與其他可重定位目標(biāo)文件組合的形式包含機(jī)器代碼,以形成可執(zhí)行目標(biāo)文件。
如果您a.c有源文件,要使用GCC創(chuàng)建其目標(biāo)文件,應(yīng)運(yùn)行: gcc a.c -c
整個過程將是:預(yù)處理器(cpp)將在ac上運(yùn)行。其輸出(仍然是源)將輸入到編譯器(cc1)中。它的輸出(匯編)將輸入到匯編器(as)中,從而產(chǎn)生relocatable object file。該文件包含目標(biāo)代碼和鏈接(和調(diào)試(如果-g使用過的話))元數(shù)據(jù),并且不能直接執(zhí)行。
共享對象文件
可重定位目標(biāo)文件的一種特殊類型,可以在加載時或運(yùn)行時動態(tài)加載。共享庫就是這類對象的一個示例。
可執(zhí)行目標(biāo)文件
包含可以直接(通過加載程序,例如execve)加載到內(nèi)存中并隨后執(zhí)行的機(jī)器代碼。
通過多個運(yùn)行鏈接器的結(jié)果relocatable object files是executable object file。鏈接器通過將所有相同類型的輸入節(jié)(例如.data)合并到相同類型的輸出節(jié),從左至右合并了命令行中的所有輸入目標(biāo)文件。它使用symbol resolution和relocation。
獎金:
鏈接時static library,將輸入對象中引用的功能復(fù)制到最終可執(zhí)行文件中。隨著dynamic libraries創(chuàng)建一個符號表代替,使一個充滿活力與圖書館的功能/全局鏈接。因此,結(jié)果是部分可執(zhí)行的目標(biāo)文件,因為它取決于庫。如果該庫不存在,則該文件將不再執(zhí)行。
鏈接過程可以如下進(jìn)行: ld a.o -o myexecutable
命令:gcc a.c -o myexecutable將調(diào)用在點1和點3提到的所有命令(cpp-> cc1-> as-> ld 1)
1:實際上是collect2,它是ld的包裝。
分享編輯
總結(jié)
以上是生活随笔為你收集整理的目标指令c语言是什么,什么是C中的目标文件?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言ungetc参数,关于一些C语言标
- 下一篇: 赣南师范大学c语言实验报告,赣南师范大学