當前位置:首頁 » 編程軟體 » 代碼編譯後變成二進制可執行

代碼編譯後變成二進制可執行

發布時間: 2022-04-19 06:58:51

⑴ 源程序文件是怎樣變成可執行的二進制文件的

通過下面這條命令,main.c和swap.c就產生了一個可執行二進制文件swap》gccmian.cswap.c-oswap那麼這條命令是么樣把源程序變成可執行程序的呢?步驟如下:1、驅動程序首先調用C預處理器(CPP)把源文件翻譯成一個ASCII中間文件mian.i,預處理器會把#include所包含的內容都插入到聲明的位置,並且做宏替換,把main.c文件的第3行的SIZE替換成2(注意這里只是做簡單的文本替換)。2、接下來驅動程序的C編譯器將main.i翻譯成匯編語言程序main.s3、然後驅動程序的匯編器將匯編語言程序main.s翻譯成可重定位的二進制文件main.o4、最後運行鏈接器將main.o與swap.o以及一些必要的系統目標文件(比如你將調用的printf函數就是printf.o)連接起來變成一個可執行的二進制文件。

⑵ C/C++語言編譯生產可執行的二進制文件的過程求大神詳盡解釋,

  1. 預編譯。編譯器將你的.c、.cpp源代碼,通過解釋其中的預編譯指令,將源代碼轉換成相應的沒有任何預編譯指令的代碼。

  2. 編譯、優化。將上一步的代碼編譯成匯編指令,並作一定優化,形成對應的.s匯編代碼

  3. 匯編。將.s文件匯編成機器碼,形成對應的.o目標文件,此時是不可執行的二進制文件。生成對應的清單文件。為了連接需要,還會生成未定向符號表、導出符號表、地址重定向表等等。

  4. 連接。先根據對應的清單文件、連接文件及之間的調用關系,決定所有的目標文件及引用的庫文件在最後可執行文件中的位置;然後做一些其他事情,比如根據符號表等將目標文件中的符號地址補全等等;最終得到可執行文件。

這只是我個人的簡單理解,更詳盡的解答都可以寫成好幾本書了=_=望採納~

⑶ C++編譯以後是二進制代碼二進制代碼的程序不是在任何系統下都能運行的

取決於編譯器。一般來講每個操作系統都有各自對應的C++編譯器。舉個例子,若想在LINUX上運行開發的程序,則需要使用支持Linux平台的編譯器。
可以這么理解,語言只是一組規范,而編譯器是將這些規范解釋到對應的操作系統的機器指令。
另一種語言JAVA,與之相反,是跨平台的。理論上使用一個編譯器生成的可執行文件,可以運行在任意一個操作系統上。這是JAVA語言與C++等語言重大不同之一。當然,跨平台的前提是,各個操作系統都有對應的JAVA虛擬機。即,Java程序是基於JAVA虛擬機運行的,而不是直接與系統交互。

⑷ C#如何編譯為二進制可執行文件

默認情況下,C#編譯後是一個EXE文件,但是卻依賴於.NET FRAMEWORK框架才能運行。如果要脫離這個框架,你需要把C#生成的EXE文件編譯成本機代碼,然後才能脫離這個.NET框架運行。完整實例,可以參考:http://hi..com/44498/blog/item/dabd37166a11bd10962b437d.html

⑸ 計算機翻譯程序如何把一個面向人看懂的語句組成程序變成計算機可執行的二進制代碼的過程

計算機程序語言主要有兩類,一種是腳本語言,另一種是需通過編譯的語言。

腳本語言通過解釋執行。編譯語言通過編譯器翻譯後執行。

在紙上寫好人看懂的語句組成的程序,當然是按腳本語言或編譯語言的語法規定寫的。
用編輯器,例如notepad,從鍵盤打進去,存成磁碟文件。

解釋器,邊讀程序,邊解釋,邊執行。例如,瀏覽器處理HTML網頁,Shell處理「批」文件。

編譯語言,由編譯器讀入全部程序,然後做詞法分析,句法分析,語法分析,邏輯結構分析,按語句順序及程序內容規定的條件轉移次序,翻譯成數據和指令碼,鏈接嵌入必要的庫的代碼,作優化後把可執行碼(二進制代碼)存回磁碟。最後用戶運行可執行碼。例如,vb,vc程序。

⑹ 將v b語言的程序變成計算機可執行的二進制代碼這工作通常是由什麼執行

編譯方式是指利用事先編好的一個稱為編譯程序的機器語言程序,作為系統軟體存放在計算機內,當用戶將高級語言編寫的源程序輸入計算機後,編譯程序便把源程序整個地翻譯成用機器語言表示的與之等價的目標程序。
然後計算機再執行該目標程序,以完成源程序要處理的運算並取得結果。解釋方式是指源程序進入計算機後,解釋程序邊掃描邊解釋,逐句輸入逐句翻譯,計算機一句句執行,並不產生目標程序。
利用編譯程序從源語言編寫的源程序產生目標程序的過程。 用編譯程序產生目標程序的動作。 編譯就是把高級語言變成計算機可以識別的2進制語言,計算機只認識1和0,編譯程序把人們熟悉的語言換成2進制的。
編譯程序把一個源程序翻譯成目標程序的工作過程分為五個階段:詞法分析;語法分析;語義檢查和中間代碼生成;代碼優化;目標代碼生成。主要是進行詞法分析和語法分析,又稱為源程序分析,分析過程中發現有語法錯誤,給出提示信息。

c語言是如何編譯成二進制

計算機專業有門課程叫做《編譯原理》,詳細講述了怎麼把高級語言翻譯成匯編語言活著機器能看懂的二進制代碼。

簡單的說,C語言是通過編譯器翻譯成二進制代碼的(就像英譯漢的軟體把英文翻譯成漢語一樣。把高級語言翻譯成機器語言過程很復雜,學了編譯原理就懂了)。還有編譯器可以用各種語言編寫,C語言可以被用C語言寫的編譯器來編譯。

⑻ 我們編寫的匯編語言和C語言如何能夠轉換成計算機可讀的二進制

將用高級語言寫成的程序變成機器可識別的二進制代碼的過程稱為編譯過程.
因為在計算機中,各種信息和數據都是以文件形式存放的.在編輯方式下建立起來的程序文件稱為源程序文件,簡稱源文件(如noname.c),相應的程序叫做源程序.源程序是用高級語言編寫的,它不能直接在機器上運行.因為計算機並不能識別源程序,它僅認識規定范圍內的一系列二進制代碼所組成的指令數據,並按預定的含義執行一系列動作.通常把這些計算機能識別的二進制代碼稱為目標代碼.為了把源程序變成目標代碼,就需要有個"翻譯"做這種轉換工作.具體實現這一轉換功能的軟體就是編譯程序,如C語言編譯程序.
經編譯後生成的目標程序的文件叫做目標文件(如noname.o).
連接:因為程序中會用到庫函數或其他函數,所以目標程序還不能馬上在機器上運行,需要把它們連成一個統一的整體,這就是連接.經過連接就把分離的目標程序連成完整的可執行程序,對應的文件是可執行文件.
運行:運行可執行文件,可得到相應的結果.如果發現運行結果不正確,那麼就要分析出錯原因,然後重新進入編輯方式,修改源程序.經編輯之後,再重復上述的編譯,連接,運行等步驟.
我們用QASM寫的是源程序,編寫好的程序編譯後形成的.obj是目標文件。.obj通過連接程序後形成.exe可執行程序。(WIN系統中程序編譯過程)
深入講解見參考資料

python的程序可以編譯成二進制可執行文件么

python下編譯py成pyc和pyo
其實很簡單,

python -m py_compile file.py
python -m py_compile /root/src/{file1,file2}.py
編譯成pyc文件。
也可以寫份腳本來做這事:
Code:

import py_compile
py_compile.compile('path') //path是包括.py文件名的路徑


python -O -m py_compile file.py
編譯成pyo文件。
1.其中的 -m 相當於腳本中的import,這里的-m py_compile 相當於上面的 import py_compile
2.-O 如果改成 -OO 則是刪除相應的 pyo文件,具體幫助可以在控制台輸入 python -h 查看
========================
from:http://blogold.chinaunix.net/u3/93255/showart_1944929.html
什麼是pyc文件
pyc是一種二進制文件,是由py文件經過編譯後,生成的文件,是一種byte code,py文件變成pyc文件後,載入的速度有所提高,而且pyc是一種跨平台的位元組碼,是由python的虛擬機來執行的,這個是類似於JAVA或者.NET的虛擬機的概念。pyc的內容,是跟python的版本相關的,不同版本編譯後的pyc文件是不同的,2.5編譯的pyc文件,2.4版本的 python是無法執行的。
什麼是pyo文件
pyo是優化編譯後的程序 python -O 源文件即可將源程序編譯為pyo文件

什麼是pyd文件
pyd是python的動態鏈接庫。

為什麼需要pyc文件
這個需求太明顯了,因為py文件是可以直接看到源碼的,如果你是開發商業軟體的話,不可能把源碼也泄漏出去吧?所以就需要編譯為pyc後,再發布出去。當然,pyc文件也是可以反編譯的,不同版本編譯後的pyc文件是不同的,根據python源碼中提供的opcode,可以根據pyc文件反編譯出 py文件源碼,網上可以找到一個反編譯python2.3版本的pyc文件的工具,不過該工具從python2.4開始就要收費了,如果需要反編譯出新版本的pyc文件的話,就需要自己動手了(俺暫時還沒這能力^--^),不過你可以自己修改python的源代碼中的opcode文件,重新編譯 python,從而防止不法分子的破解。
生成單個pyc文件
python就是個好東西,它提供了內置的類庫來實現把py文件編譯為pyc文件,這個模塊就是 py_compile 模塊。
使用方法非常簡單,如下所示,直接在idle中,就可以把一個py文件編譯為pyc文件了。(假設在windows環境下)
import py_compile
py_compile.compile(r'H:\game\test.py')
compile函數原型:
compile(file[, cfile[, dfile[, doraise]]])
file 表示需要編譯的py文件的路徑
cfile 表示編譯後的pyc文件名稱和路徑,默認為直接在file文件名後加c 或者 o,o表示優化的位元組碼

from:http://www.cnblogs.com/dkblog/archive/2009/04/16/1980757.html

⑽ llvm怎樣將中間代碼編譯為可執行二進制文件

預編譯。編譯器將你的.c、.cpp源代碼,通過解釋其中的預編譯指令,將源代碼轉換成相應的沒有任何預編譯指令的代碼。

編譯、優化。將上一步的代碼編譯成匯編指令,並作一定優化,形成對應的.s匯編代碼
匯編。將.s文件匯編成機器碼,形成對應的.o目標文件,此時是不可執行的二進制文件。生成對應的清單文件。為了連接需要,還會生成未定向符號表、導出符號表、地址重定向表等等。
連接。先根據對應的清單文件、連接文件及之間的調用關系,決定所有的目標文件及引用的庫文件在最後可執行文件中的位置;然後做一些其他事情,比如根據符號表等將目標文件中的符號地址補全等等;最終得到可執行文件。
這只是我個人的簡單理解,更詳盡的解答都可以寫成好幾本書了=_=望採納~

熱點內容
百度雲資源加密 發布:2025-03-20 14:36:52 瀏覽:449
k令密碼鎖什麼意思 發布:2025-03-20 14:14:04 瀏覽:161
python讀取png 發布:2025-03-20 14:07:27 瀏覽:62
家政小程序源碼 發布:2025-03-20 14:00:33 瀏覽:495
mfc串口源碼 發布:2025-03-20 13:51:14 瀏覽:401
推流伺服器地址是什麼 發布:2025-03-20 13:48:49 瀏覽:763
編譯不報錯怎麼回事 發布:2025-03-20 13:48:00 瀏覽:218
pythonideemacs 發布:2025-03-20 13:37:56 瀏覽:505
ftpsite 發布:2025-03-20 13:05:57 瀏覽:195
php執行語句 發布:2025-03-20 12:58:54 瀏覽:11