新聞中心
c語(yǔ)言是編譯還是解釋?
C語(yǔ)言程序需要經(jīng)過編譯生成可執(zhí)行文件才能執(zhí)行的程序代碼。

序開發(fā)過程:
編輯------>編譯------->連接--------->執(zhí)行
.cpp .obj .exe
源程序 目標(biāo)程序 可執(zhí)行程序
程序編譯的過程:
翻譯程序
總體過程: 源程序------------> 目標(biāo)程序
翻譯程序有:匯編程序,編譯程序,解釋程序.
匯編程序是將匯編語(yǔ)言寫成的源程序翻譯成機(jī)器語(yǔ)言形式的目標(biāo)程序(二進(jìn)制文件)
C語(yǔ)言是一種編譯型語(yǔ)言。編譯型語(yǔ)言的特點(diǎn)是在運(yùn)行程序之前需要將源代碼轉(zhuǎn)換成機(jī)器可以直接執(zhí)行的二進(jìn)制文件,這個(gè)過程稱為編譯。
編譯過程包括詞法分析、語(yǔ)法分析、語(yǔ)義分析、中間代碼生成、優(yōu)化和目標(biāo)代碼生成等步驟。
一旦編譯完成,生成的可執(zhí)行文件可以在目標(biāo)平臺(tái)上獨(dú)立運(yùn)行,無需再借助編譯器。
相比解釋型語(yǔ)言,編譯型語(yǔ)言的執(zhí)行效率更高,但跨平臺(tái)性較差,因?yàn)樾枰槍?duì)各個(gè)平臺(tái)進(jìn)行編譯。
C語(yǔ)言的編譯器將源代碼轉(zhuǎn)換為機(jī)器碼,使得程序可以在底層直接與硬件交互,具有高效性和靈活性,廣泛應(yīng)用于系統(tǒng)編程和嵌入式開發(fā)等領(lǐng)域。
linux strace命令詳解
strace常用來跟蹤進(jìn)程執(zhí)行時(shí)的系統(tǒng)調(diào)用和所接收的信號(hào)。下面通過本文給大家分享Linux應(yīng)用調(diào)試之strace命令,需要的朋友參考下吧
1.strace簡(jiǎn)介
strace常用來跟蹤進(jìn)程執(zhí)行時(shí)的系統(tǒng)調(diào)用和所接收的信號(hào)。 通過strace可以知道應(yīng)用程序打開了哪些文件,以及讀寫了什么內(nèi)容,包括消耗的時(shí)間以及返回值等。在Linux世界,進(jìn)程不能直接訪問硬件設(shè)備,當(dāng)進(jìn)程需要訪問硬件設(shè)備(比如讀取磁盤文件,接收網(wǎng)絡(luò)數(shù)據(jù)等等)時(shí),必須由用戶態(tài)模式切換至內(nèi)核態(tài)模式,通 過系統(tǒng)調(diào)用訪問硬件設(shè)備。strace可以跟蹤到一個(gè)進(jìn)程產(chǎn)生的系統(tǒng)調(diào)用,包括參數(shù),返回值,執(zhí)行消耗的時(shí)間。
2.安裝strace命令
首先需要以下兩個(gè)文件:
strace-4.5.15.tar.bz2
在最簡(jiǎn)單的情況下,strace運(yùn)行指定的命令,直到它退出。它攔截并記錄進(jìn)程調(diào)用的系統(tǒng)調(diào)用和進(jìn)程接收到的信號(hào)。每個(gè)系統(tǒng)調(diào)用的名稱、參數(shù)及其返回值都打印在標(biāo)準(zhǔn)錯(cuò)誤或用-o選項(xiàng)指定的文件中。
strace是一個(gè)有用的診斷、指導(dǎo)和調(diào)試工具。系統(tǒng)管理員、診斷人員和故障排除人員將發(fā)現(xiàn),它對(duì)于解決源代碼不易獲得的程序的問題是非常寶貴的,因?yàn)樗鼈儾恍枰獮榱烁櫠匦戮幾g。學(xué)生、黑客和過于好奇的人會(huì)發(fā)現(xiàn),通過追蹤甚至是普通的程序,可以了解到很多關(guān)于系統(tǒng)及其系統(tǒng)調(diào)用的信息。程序員會(huì)發(fā)現(xiàn),由于系統(tǒng)調(diào)用和信號(hào)都是發(fā)生在用戶/內(nèi)核界面上的事件,因此仔細(xì)檢查這個(gè)邊界對(duì)于錯(cuò)誤隔離、健全性檢查和試圖捕獲競(jìng)爭(zhēng)條件非常有用。
跟蹤中的每一行都包含系統(tǒng)調(diào)用名,以及包含在括號(hào)中的參數(shù)及其返回值。對(duì)命令cat /dev/null進(jìn)行掃描的示例如下:
錯(cuò)誤(通常返回值為-1)附加了errno符號(hào)和錯(cuò)誤字符串:
信號(hào)被打印成信號(hào)符號(hào)和信號(hào)串?!皊leep 666”命令的掃描和中斷摘錄如下:
如果一個(gè)系統(tǒng)調(diào)用正在執(zhí)行,而另一個(gè)系統(tǒng)調(diào)用正在從不同的線程/進(jìn)程調(diào)用,那么strace將嘗試保持這些事件的順序,并將正在進(jìn)行的調(diào)用標(biāo)記為未完成。當(dāng)呼叫返回時(shí),它將被標(biāo)記為已恢復(fù):
參考: https://linux.die.net/man/1/strace
到此,以上就是小編對(duì)于linux單獨(dú)編譯一個(gè)ko文件的問題就介紹到這了,希望這2點(diǎn)解答對(duì)大家有用。
當(dāng)前名稱:c語(yǔ)言是編譯還是解釋?(linux .ko文件編譯,Linux如何編譯c文件)
分享地址:http://www.5511xx.com/article/ccohdje.html


咨詢
建站咨詢
