可執行檔案的生成
菜雞剛學,寫下筆記方便複習。
一個程式的轉化處理過程可以如下表示:
.c字尾的原始檔 (經過預處理)-> 變成 .i 字尾的源程式 (經過編譯)-> .s字尾的組合語言程式檔案 (經過彙編後)-> .o字尾的可重定位目標程式 (經過連結)-> 可執行檔案
以c ,i , s結尾的檔案都是可讀的文字檔案。
.o結尾和可執行檔案都是二進位制檔案。
預處理
處理原始檔中以 “#” 開頭的預編譯指令,經過預編譯處理後,得到的是以 .i 結尾的預處理檔案,他沒有了巨集定義,仍是一個可讀的文字檔案,本質上還是C語言的程式碼。
編譯
編譯就是將預處理生成的 .i 檔案 翻譯成 組合語言程式碼,該過程就是compile,編譯後的檔案內容,本質上是組合語言程式程式碼。
彙編
經過編譯後的檔案,本質是組合語言程式碼,還是可讀的文字檔案,但是cpu看不懂他,還需要將他翻譯成cpu能讀懂的二進位制檔案,將彙編指令一一對應,轉化為機器指令序列。
連結
連結過程是將多個 .o 檔案(可重定向目標程式)合併在一起, 生成可執行檔案,這是因為主函式裡呼叫了一些標準庫裡的寫好的函式,需要將他們的.o檔案合併在一起才能生成可執行檔案。
相關推薦
可執行檔案生成過程概述
處理原始檔中以“#”開頭的預編譯指令,包括: 刪除“#define”並展開所定義的巨集 處理所有條件預編譯指令,如:“#if”,“#ifdef”,”endif”等 插入標頭檔案到“#include”處,可以遞迴方式進行處理 刪除所有的註釋“//”和“/**/” 新增行號和檔名標識,以便編譯時編譯器產生除錯用
Makefile 編譯生成多個可執行檔案
all:server client server:server.c gcc $< -o [email protected] client:client.c gcc $< -o [email protected] clean: &nb
VS2010靜態編譯生成.exe可執行檔案
VS2010靜態編譯生成的.exe可執行檔案,可以免安裝在其他電腦直接執行 靜態編譯:就是在編譯可執行檔案的時候,將可執行檔案需要呼叫的對應動態連結庫(.so)中的部分提取出來,連結到可執行檔案中去,使可執行檔案在執行的時候不依賴動態連結庫。 編譯方式: 第1種:
>pyinstaller -F -w -i D:\tmp\main.ico D:\python_test.py -F 表示生成單個可執行檔案,執行後dist目錄中出現了python_test.exe
pyinstaller -F -w -i D:\tmp\main.ico D:\python_test.py -F 表示生成單個可執行檔案,執行後dist目錄中出現了python_test.exe檔案,沒有任何依賴庫,執行它即可。 -w 表示去掉控制檯視窗,這在GUI介面時
002-【最簡單】Electron 怎麼將網頁打包成桌面應用(web前端頁面怎麼生成exe可執行檔案)
在 HTML5的崛起、JavaScript要一統天下之際,有一個名為【跨平臺】的技術越來越火。為什麼會這麼火?因為軟體開發者
【最簡單】Electron 怎麼將網頁打包成桌面應用(web前端頁面怎麼生成exe可執行檔案)
在 HTML5的崛起、JavaScript要一統天下之際,有一個名為【跨平臺】的技術越來越火。為什麼會這麼火?因為軟體開發者只需一次編寫程式,即可在 Windows、Linux、Mac、IOS、
可執行檔案的生成
菜雞剛學,寫下筆記方便複習。 一個程式的轉化處理過程可以如下表示: .c字尾的原始檔 (經過預處理)-> 變成 .i 字尾的源程式 (經過編譯)-> .s字尾的組合語言程式檔案 (經過彙編後)-> .o字尾的可重定位目標程式 (經過連結)-> 可執行檔案
Python 中使用 pyrex 生成 Linux 可執行檔案
這個問題是相當有意義的,如果有了比較好的方法,Python 完全可以用來開發商業軟體,而不用擔心原始碼洩露。 前兩天我在網上看了看,有很多的人在問這個問題。大部分的人都在用 py2exe,這是個對 Python 程式打包的東東,實際上只是在 Python 程式中找
Linux下安裝pyinstaller用於將py檔案打包生成一個可執行檔案
(2)cd pyinstaller-2.1 執行 python setup.py install 4. 拷貝py檔案 將需打包的py檔案如test.py 拷貝到當前目錄 5. 生成可執行檔案 cd到pyinstaller目錄, 執行 python pyinstaller.py test.py可能遇到的問題1
怎樣用Eclipse將Java原始碼生成可執行檔案
eclipse將java原始碼生成jar可執行檔案 用eclipse做了一個web專案的自動化測試,自己用的時候倒是很方便,開啟eclipse直接執行即可,但是分享給其他小夥伴用的時候就不太方便,希望
linux執行應用程式not found問題(交叉編譯生成的可執行檔案)
[email protected]:~/Desktop/em35x-ezsp$readelf -a build/ZigBee/ZigBee |grep NEEDED 0x00000001 (NEEDED) Shared library: [libreadli
makefile簡單編寫-生成可執行檔案
makefile 要想把寫好的程式放到linux下編譯,必不可少的要使用到makefile檔案。makefile帶來的好處就是——“自動化編譯”,一旦寫好,只需要一個make命令,整個工程完全自動編譯,極大的提高了軟體開發的效率。下面講下makefile簡單的
Linux中原始檔生成可執行檔案的過程
原始檔通過編譯、連結形成可執行檔案 編譯 編譯可以分為三部分:預編譯,編譯,彙編 預編譯:main.c gcc -E main.c 編譯:main.i gcc -S main.i 彙編:main.s gcc -c
如果有python而不能生成win獨立可執行檔案,則要python有什麼用呢
In this article you will see how one could create an executable of some program written in the Python language. The goal is to make some distribuable exe
python 將py指令碼打包生成exe可執行檔案
python 環境 2.7.4 最終效果如下 使用 了 pyinstaller 這裡打包一個exe只需兩步 第一步 python 環境下 命令列直接 pip install pyinstaller 第二步 下載完成後, 命令列 pyinstaller -F 檔名
ndk生成elf可執行檔案及動態庫檔案
Eclipse中安裝好adt外掛後,就可以通過Eclipse開發Android工程,然後網上下載一個ndk包並解壓,然後在Eclipse中填好ndk目錄,之後便可以使用ndk。ndk最主要的功能是為了實現Android 的jni,除此功能外還可通過ndk生成elf可執行檔
'假定以下程式經編譯和連線後生成可執行檔案PROG.EXE,如果在此可執行檔案所在目錄的DOS提示符下鍵入:PROG ABCDEFGH IJKL<回車>,則輸出結果為( ). void main( int argc, char *argv[]) { while(--argc>
main(int argc,char *argv[])函式的兩個形參,第一個int argc,是記錄你輸入在命令列(你題目中說的操作就是命令列輸入)上的字串個數;第二個*argv[]是個指標陣列,存放輸入在命令列上的命令(字串)。當命令列輸入PROG ABCDEFGH IJKL時,記錄了3
QT--生成可執行檔案
QT 生成的可執行檔案exe在其他電腦還不能使用需要附帶DLL方法:windows下用cmd進入qt專案對應的release檔案中 然後執行windeployqt test.exe那麼對應的資料夾中會生成對應的dll檔案,一起打包就可以用了
Xcode生成的可執行檔案在哪裡!
很多iphone、ipad、xcode、mac os x初學者編了半天程式,結果找不到生成的可執行檔案在哪裡。實際上生成可釋出的可執行程式需要進行一些設定。首先啟動xcode,單擊Xcod
Matlab 生成可執行檔案
相信很多用Matlbab開發的同學們都對Matlab強大的工具包所吸引,但是並不是所以環境都支援對M檔案執行,在沒有安裝Matlab的電腦上我們該如何M檔案進行運算呢。首選當然是把M檔案匯出成一個可在WINDOWS上執行的EXE檔案了。下面開始說說如何匯出: