5018=編譯與執行工具列. 5019=專案工具列. 5020=求助工具列. 5021=特殊工具列 ... 46018=不產生可執行檔,而產生組語程式碼(-S) ... 55028=新增程式庫或目的檔. ... <看更多>
目的檔 執行檔 在 如何製作bat或是exe,可用exe方式執行任何檔案 - Mobile01 的推薦與評價
執行完後再把exe副檔名去掉或換掉。是最簡單達到你1樓提到的目的(且不用寫程式)。 但如一開頭我說的,這個bat檔對 ... ... <看更多>
Search
5018=編譯與執行工具列. 5019=專案工具列. 5020=求助工具列. 5021=特殊工具列 ... 46018=不產生可執行檔,而產生組語程式碼(-S) ... 55028=新增程式庫或目的檔. ... <看更多>
執行完後再把exe副檔名去掉或換掉。是最簡單達到你1樓提到的目的(且不用寫程式)。 但如一開頭我說的,這個bat檔對 ... ... <看更多>
#1. 初次學習C - iT 邦幫忙::一起幫忙解決難題,拯救IT 人的一天
1.直譯器只要將程式逐行翻譯因此所佔用的記憶體較少? 2.原始檔.目的檔.執行檔有何不同? 3.我應該做何設定才能看到目的檔? 3.低.高階語言差異比較?
目的檔 包含著機器碼(可直接被電腦中央處理器執行)以及代碼在執行時使用的資料,如重定位資訊,如用於連結或除錯的程式符號(變數和函式的名字),此外還包括其他除錯資訊 ...
#3. 關於目的檔(object file) - HackMD
關於目的檔(object file) 在了解連結前我們必須先觀察目的檔。 **目的檔本身就是一個可執行得檔案,只是還未經過連結,其中可能有些符號或是位址還未調整** !
#4. 高階語言運作情形
Object file:目的檔就是compiler將你的source code compile 之後造出來的機器碼 (4) · Linker:連結器 linker也是一支程式喔. · Executable file:執行檔可執行檔就是真正拿來 ...
#5. 系統程式-- 第5 章連結與載入 - SlideShare
第5章連結與載入連結器是用來將許多目的檔連結成一個執行檔的程式,而載入器則是用來將執行檔載入到記憶體當中執行的程式。在本章中,我們會將焦點放在連結器、載入器 ...
把所有的檔案編譯完成後,還需要透過連結器(LD.EXE in MINGW GCC) 把各個目的檔重組成執行檔,執行檔的檔尾是EXE。這裡的執行檔的格式和MS-DOS 的執行檔格式一樣,起頭都是 ...
#7. 編譯步驟
將目的檔和函式庫中的程式連結成可執行檔,函式庫存放一些C/C++ 常用的function,可執行檔為機器可執行的程式;; 執行可執行檔。 gcc/g++ 編譯流程:編譯的過程中,會產生 ...
#8. 執行檔 - Wikiwand
執行檔 在電腦科學中指一種內容可被電腦解釋為程式的電腦檔案。通常執行檔內,含有以二進制編碼的微處理器指令,也因此執行檔有時稱為二進制檔。這些二進制微處理器指令 ...
#9. 程式設計師的自我修養| 心得導讀- 軟體開發 - Medium
第3章剖析目的檔:介紹COFF目的檔格式和原始碼編譯後如何在目的檔中儲存。 ... 第5章Windows PE/COFF:介紹Windows 平台的目的和可執行檔格式。
#10. 高階語言-知識百科-三民輔考
編譯程式是將整個程式加以檢查,完全沒有語法錯誤後,才將它全部轉換成機器語言(稱之為「目的檔」);接下來再利用連結程式(Linker),將「目的檔」連結成可執行檔。
#11. 原始程式檔和來源程式 - Microsoft Learn
您必須編譯每一個轉譯單位,並連結產生的目的檔,以便建置程式。 C「原始程式」為指示詞、pragma、宣告、 ... 原始程式檔不需要包含可執行語句。
#12. Linux 的目的檔-软件开发平台及语言笔记大全(超详细)
這是由於UNIX與Linux 的預設編譯執行檔名稱為a.out 的原因。圖1 顯示了a.out 的檔案格式,並且與目前Linux 所使用的ELF 格式進行對比。 目的檔a.out 的格式相當簡單,總共 ...
#13. C 語言程式設計 - 鼎文公職
的副檔名為「 xxx.c」,程式經過編譯之後會產生一個副檔名為exe 的執行檔。 鼎文公職. 試閱講義 ... 目的檔. 連結器. 執行檔. 其它目的檔. 函式庫. 鼎文公職. 試閱講義 ...
#14. 第一章認識C 語言本章簡介 - 林偉川
開發的人比較多, 此時會將程式分成多個原. 始程式,每個原始程式都可個別編譯成目的. 檔, 然後於連結時, 再將所有的目的檔與函. 式庫連結成一個完整的執行檔。
#15. C 語言專案架構圖
C 語言專案架構圖 ***. 《 專案中( c1.dev )每個原始程式檔( *.c ),個別編譯成目的檔( *.o ),再將所有目的檔與函數庫連結成一個執行檔( c1.exe ) 》.
#16. 第一章
程式設計和執行的步驟:. ➀在文字編輯器中輸入C++程式碼。 ➁啟動編譯器(compiler),編譯原始碼檔案。 ➂啟動連結器(linker),將編譯好的目的檔連結起來。
#17. XCOFF 物件檔格式 - IBM
XCOFF 組合標準共用目的檔格式(COFF) 與TOC 模組格式概念,以提供動態鏈結及置換目的檔中的單元。 XCOFF 的變異用於64 位元物件檔及執行檔。
#18. 教科書:系統程式- 第5 章、連結與載入
將許多目的檔連結成一個執行檔的程式. 載入器. 將可執行檔載入到記憶體當中執行的程式。 執行檔. Windows. 像是test.exe,csc.exe,… Linux. 像是a.out,test.o 等。
#19. Makefile
Make:直接執行檔名為makefile; Make clean:執行makefile裡clean的target所指的指令 ... 而且把目的檔使用一個巨集表示,可以讓你方便管理,不會忘了打某個目的檔讓你 ...
#20. 編譯程式設計期末專題技術教學文件
接下來第二步是要把產生的目的檔和C的函式庫(libc)連結以產生可執行檔, 我們使用gcc作為我們的連結器以簡化使用方法。 在compiler中呼叫 gcc -o test.x.bin test.x.o 。
#21. 資訊概論
的特點是再次使用只要執行目的程式,無須重新在編譯其. 原始程式 ... Java 本身和C 與C++ 的相似程式. 14. 高階程式語言轉變成執行檔的歷程. 目的. 程式. 目的.
#22. 《程式語言》
至應用程式內,並製作成目的檔以及可以獨立運作的執行檔。靜態連結之主要優點是程式和程式相關函式庫. 都保存在一起,因此只需保證在編譯時期有正確引入函式庫檔案, ...
#23. 二、DEV-C++程式環境
.exe, 可執行檔,經過編譯連結所產生的執行檔,可以不用進入DEV-C++,直接在桌面便可 ... H) 函式庫. 原始程式(.C) + 編譯器 目的檔(.OBJ) + 連結器=>執行檔(.EXE).
#24. 本章提要7-1 軟體的種類7-2 組譯器7-3 連結器與載入器7-5 編譯器
利用編譯器(Compiler) 將程式碼編譯成目的檔(Object Program)。 再以連結器(Linker) 將其他相關的程式連結在一起, 成為可被執行的執行檔。 20. 程式開發工具.
#25. 認識C語言
編譯器在編譯程式時,會先檢查所有的程式碼是否合語法,然後編譯成可執行檔。 當原始程式每修改一次, ... 執行檔. Compiler. 1.1.2. 編譯器先產生目的檔,. 再執行該程式.
#26. C語言的第一步
程式設計和執行的步驟. ➀在文字編輯器中輸入C語言程式碼. ➁啟動編譯器(compiler),編譯原始碼檔案. ➂啟動連結器(linker),將編譯好的目的檔連結起來.
#27. 編譯你的第一個C程式 - 隨意窩
本篇學習目標. 1. 學會用gcc編譯你的c語言原始碼成可執行檔. 2. 學會用gcc產生編譯過程中所產生的檔案. 3. 了解從原始碼到可執行檔中間所發生 ...
#28. 1.問題
可能原因:無法找到程式庫(.lib)或要連結的目的檔(.obj)。 4)執行產生出的可執行程式。 –依據測試計畫,若執行結果產生預期的行為, ...
#29. 2. Hello World! 您的第一隻C++語言程式
符合作業平台的可執行檔(例如Windows平台下的EXE檔)。 ... 符合 C++ 語言的語法規則,然後才會將其轉換為目的檔(Object Code,在figure 1中標示為D之 ...
#30. 標頭檔的必要性與其內容 - 譯者序
連結器看到這個訊息,在執行檔佈局規劃好後,把程式的片斷接起來,然後修正跳躍的目的位址(這個步驟稱為「重新定位」(relocate))。因此,分離編譯需要知道函式的 ...
#31. 高階語言
容易學習,但執行效率比低階語言差。 它的特性是,不受電腦機種、 目的檔(第章) 連結器(第章) 函式庫(第章) 組譯器(第章) 編譯器(第章) 直譯器(第章) ...
#32. Ch 01 第一個組合語言程式 - 小木偶的網頁
上述的過程是MASM.EXE 是把原始檔( 也就是*.ASM ) 組譯為目的檔*.OBJ,而連結器是把目的檔與程式庫連結起來,變成可執行的檔案*.EXE,稍後我再作說明。最後可用EXE2BIN 將* ...
#33. Creo View - 使用下載的可執行檔執行安裝 - PTC Support
使用下載的可執行檔執行安裝. 如果您下載安裝程式,則可以使用可執行檔來執行簡易安裝或進階安裝。 ... 「變更目的地資料夾」(Change destination folder) 頁會開啟。
#34. 程式語言的簡介
組合語言:需以「組譯器(______)」翻譯成機器語言後,才能執行. 高階語言:接近人類語言(不因 ... 執行速度快. 慢. 原始程式. 語言. 目的程式. 語言. 執行檔 .exe.
#35. 何者的主要功能為將程式的目的檔(object file)組合成..
下列程式,何者的主要功能為將程式的目的檔(object file)組合成為執行檔? (A)組譯程式(assembler) (B)編譯程式(compiler) (C)連結程式(linker) (D)載入程式(loader).
#36. C語言教學:Windows下載gcc編譯器,建立a.exe可執行檔
一、SourceForge · 二、Bin資料夾路徑 · 三、gcc程式編譯器 · 四、PowerShell測試 · 五、C語言程式文件 · 六、gcc編譯C語言 · 七、a.exe可執行檔 · 八、Hello ...
#37. Dreye權威釋義|compiler
原始碼(source code)→ 預處理器(preprocessor)→ 編譯器(compiler)→ 組譯程式(assembler)→ 目的碼(object code)→ 連結器(linker)→ 執行檔(executables) ...
#38. [C 語言] 程式設計教學:基本概念
最後,透過連結,將目的檔轉為執行檔(executable)。執行檔即為可使用的電腦程式(program)。Unix 或類Unix 系統的執行檔不加副檔名,Windows 系統的 ...
#39. 1032計算機概論.pdf - 中國文化大學
編譯器將程式碼轉譯成目的檔的流程為下列何者?(A) 程式碼→連結器→目的檔→編譯器→執. 行檔(B) 程式碼→目的檔→編譯器→連結器→執行檔(C) 程式碼→編譯器→連結 ...
#40. 【語言】直譯與編譯- Interpretation and ... - Infinite Loop
將原始碼轉換為目的檔之後,我們還需要經由連結器(linker)連結一個或多個目的檔與外部函式庫(library),轉換成機器碼以形成可執行檔(executable file) ...
#41. Sample-2023年程式語言與設計高分講義
(3)連結程式將所用到的 C 函數由函式庫連結到目的檔案後形成執行檔。 (4)執行檔 .exe 才是真正可執行的檔案。
#42. 如何利用MATLAB Compiler 將MATLAB 函式(M files)轉成執行 ...
目的 :. 利用MATLAB Compiler將MATLAB函式轉成執行檔(*.exe),並置於沒有MATLAB. 的環境下使用。
#43. 計算機程式(應數系)
編譯器. (Compiler). 撰寫程式. 目的檔. (xxx.obj). 函式庫. (Library). 連結程式. (Linker). 執行檔. (xxx.exe). 12. NCCU. C Programming. Variables in Programming.
#44. Page 20 - FC10710_程式語言與設計(上)
原始程式無法直接在電腦中執行,必須將程式碼翻譯成機器語言才能交付給電腦硬體去 ... 翻譯成目的程式(Object Code)後,透過連結程式(Linker)產生可執行檔(.exe ...
#45. Make file 整理| 程式學習紀錄 - - 點部落
gcc –c hello.c => 產生 hello.o 目的檔. gcc –o hello hello.o => 產生 hello 可執行檔 輸入. ... <tab> gcc -o 欲建立的執行檔 目標檔1 目標檔2.
#46. 什麼是編譯器、連接器、程式庫? - 科技讀蟲
連接器Linker · 在編譯器產生出各個目標文件後,連接器的主要功能就是將這些目標文件“連接”起來,並產生一個執行檔(executable)。而這個執行檔,就是你最後 ...
#47. C 的模組化| 高等C語言
然後用下列指令編譯並執行(其中的-c 參數用來告訴編譯器只要編譯成目的檔就好,不需要進一步連結成執行檔)。 gcc -c matrix.c -o matrix.o gcc main.c matrix.o -o ...
#48. 編譯器與計算機系統之實作
src:存放C原始檔. include:存放標頭檔. build:存放編譯過的目的檔和執行檔. demo:存放示範檔案. 由Makefile來統一管理專案. 系統演示. S-expressions 輸出.
#49. 第六章、Linux 檔案與目錄管理 - 鳥哥私房菜
最後需要注意的,如果來源檔有兩個以上,則最後一個目的檔一定要是『目錄』才行! 複製(cp)這個指令是非常重要的,不同身份者執行這個指令會有不同的結果產生,尤其是 ...
#50. 資料夾中的可執行檔新增到應用程式類別 - Kaspersky support
MD5(停止使用的模式,僅針對Kaspersky Endpoint Security 10 Service Pack 1 版本)。 點擊“確定”。 文章ID: 166751, 上次 ...
#51. 會先呼叫巨集處理器
... 將程式碼編譯成目的檔(Object Program);再以連結器(Linker) 將其他相關的程式連結在一起, 成為可被執行的執行檔;最後再透過載入器(Loader) 載入到記憶體中執行:.
#52. Linux 基礎學習1.檔案屬性
x表可執行(execute). 若沒有某項權限,則以[ - ]表示. c. 1 表連結數(i-node) ... 目的 指令 語法 ... 複製link cp $ cp -d 來源檔目的檔. 複製目錄 $ cp -r.
#53. Linux教學-在Linux 環境下以C or C++ 語言撰寫程式之方法
在/etc/passwd 檔中每行shell 設定 ... 程式執行時系統環境變數是利用位於/home/{login_name} 下 ... 目的檔相對於執行檔(object-to-executable).
#54. 命令格式-命令[選項] [處理對象] (例: ls -la mydir)
ls -F, 依檔案格式分類,可執行檔檔名後加'*',目錄名稱後加上'/',link檔檔名加上'@' ... <原始檔> <目的檔> 若原始檔和目的檔在同一目錄下,可更改檔名,若加上路徑 ...
#55. 107 年公務人員特種考試關務人員考試試題 - 公職王
目的檔 再經由連結其他目的檔及程式庫形成執行檔,最後由電腦直接執行。 直譯器是採用即時翻譯的方式來運作,過程不會產生目的檔。直譯器(例如瀏覽器)會將程式 ...
#56. 如何在執行檔(.NET) 裡附加額外的資料? - 安德魯的部落格
產出的start.exe 執行之後, 按下[RUN] 就自動開啟圖檔, ... 這些工具目前還查不到對等的class library 可以簡單的達成一樣的目的, 沒事去拿MSBuild 裡 ...
#57. 執行檔 - 中文百科全書
EXE File英文全名executable file ,譯作執行檔,可移植可執行(PE) 檔案格式的檔案, ... 它主要的目的是將便於人編寫、閱讀、維護的高級計算機語言所寫作的原始碼程式, ...
#58. C 語言講座: 1.1 如何編譯及執行程式
一個程式必須經過下面的流程才可以變成可執行檔:. 原始碼(source code) ↓ 編譯器編譯(compiled by compiler) ↓ 目的碼(object code)
#59. 一點都不深入的了解Compiler、 Interpreter 和VM
光有這個source code 轉成的目標碼還不夠,還必須把它引用的library 使用linker 把他們打包再一起,最終產生出一個可以執行的執行檔(Executable)。
#60. 程式設計(二) 參考書目: 1.
編譯後的目的檔與執行檔如下圖所示. 25. 條件式編譯. #ifdef、#else與#endif指令. 26. 使用條件式 ...
#61. 將目的碼載入記憶體執行包含多項工作步驟,下列何者不屬之?
這也是組譯器無法做到的。 連結器(Linker) 就是用來將相互呼叫的各程式目的檔連結(Linking) 在一起, 產生可重新定址的機器 ...
#62. C語言社團札記3 我的第一個程式 - 電腦不難
接著再經過編譯器之後,就會先變成電腦看得懂的目的檔。然後再經由連結器把其他需要用到的目的檔或程式庫放進程式中,就變成了完整目的檔,也就是執行 ...
#63. CSAPP閱讀筆記之Linking - Jinyo的隨便寫寫
Object Files Format 目的檔格式. Relocatable object file:可重定檔. 包含了程式碼(code)和資料(data) ,可被重新Relocate成新的物件檔或可執行檔。
#64. 微軟作業系統內建指令XCOPY備份功能介紹
建立一個批次執行檔(bat),裡面放一行Windows所提供的XCOPY指令,再加入適當的參數就可以 ... 目的:D:\隨身碟備份\,表示複製到目的地為D碟的[隨身碟備份]資料夾內。
#65. Shell script編譯成可執檔(加密)/設定可執行日期
... text,等於大家可以完全閱讀您的程式碼也容易去竄改內容,以下介紹大家如果將ASCII text轉換成目的檔ELF 格式(Executable and Linking Format)。
#66. 107.08.24 C 語言編譯到執行流程 - 記錄用
功能也很多,可以直接將C 的原始碼輸出成可執行檔(Executable),也可以透過選項控制輸出中介 ... 目的檔可以透過連結成為可執行檔或是函式庫(Library) ...
#67. 第章組譯器第2章組譯器
原始程式--> 經由編譯器--> 變成目的檔. --> 經由連結器--> 變成執行. 檔. ▻ SOURCE C --> COMPILER --> SOURCE OBJ --> LINKER --> SOURCE EXE. ▻ SOURCE.
#68. 撰寫Makefile教學 - Hsian Studio
#clean 刪除產生出來的目的檔 clean: [tab]rm -f *.o make install (呼叫make執行install target) 在範例中我們增加了install和clean兩個 ...
#69. C語言入門: 宣告,賦值,PRINTF - 寫點科普Kopuchat
原始程式–> 經由編譯器–> 變成目的檔–> 經由連結器–> 變成執行檔. SOURCE.C –> COMPILER –> SOURCE.OBJ –> LINKER –> SOURCE.EXE ...
#70. PeStudio 9.53 免安裝版- 執行檔分析鑑識軟體 - 阿榮福利味
執行檔 分析鑑識軟體- PeStudio,可以再不需要執行某個執行檔的狀況下先分析它,藉此判斷未知的程式是否為惡意軟體、程式的意圖或目的,或者了解程式的相關資訊, ...
#71. Linux 檔案操作
Linux 檔案複製指令cp (copy),基礎用法很簡易,基本上為cp 來源檔目的檔或cp 來源檔案1 來源檔案n 目的路徑(把一到多個檔案複製到目錄內)或cp 來源目錄目的目錄, ...
#72. 目的檔格式(ELF) 转载 - CSDN博客
目的檔 格式(ELF)目的檔ELF 格式(Executable and Linking Format) ... ELF可用來記錄目的檔(object file)、執行檔(executable file)、動態連結檔(share ...
#73. C語言- 第一章| IDE介紹及安裝 - J.J.'s Blogs
執行下載的安裝程式 vs_Community.exe; 你是否要允許下列程式變更這部電腦? 點擊 是(Y) ... 原始程式–> 經由編譯器–> 目的檔–> 經由連結器–> 執行檔 ...
#74. 投影片1
當make指令不帶參數時,會指令哪個目標? 自行編寫一個makefile,程式內容包含兩個.cpp / .c 檔案與一個.h 檔案,使用make指令成功產生執行檔.
#75. [圖解] 編譯vs 直譯 - 逍遙文工作室
程式經過編譯後產生的目的碼,可以透過「連結器」連結與程式相關的檔案,以產生可執行檔(像.exe)。當要執行程式時,只要透過系統的「載入器」將可 ...
#76. 組合語言詳細執行過程 - Live Learning
外也可以選擇輸出清單檔。 步驟三: 連結器讀取目的檔,並且尋找程式中是否有呼叫到任何連結函式庫中 的函式。
#77. 2009/6/14 - 2009/6/21 - 小華的部落格
產生輸出檔案,以便在Common Language Runtime 上執行。 ... 顯示在診斷測試中傳遞給cl.exe 的原始程式檔完整路徑 ... 建立目的檔。
#78. dev-cpp/Chinese_TC.lng at master - GitHub
5018=編譯與執行工具列. 5019=專案工具列. 5020=求助工具列. 5021=特殊工具列 ... 46018=不產生可執行檔,而產生組語程式碼(-S) ... 55028=新增程式庫或目的檔.
#79. 下載檔案- 電腦- Google Chrome說明
如果你無法執行這個動作,表示影片的擁有者或代管網站已禁止下載影片。 PDF:在檔案上按一下滑 ... 執行檔(.exe、.dll、.bat):如果你信任該檔案,請按一下「儲存」。
#80. Rust 學習之路 第一章:認識Rust程式語言 - MagicLen
使透過以下連結到 rustup 的官方網站,下載 rustup‑init.exe 安裝檔。 ... 這個指令會編譯專案,但不會產生出最終的目的檔(執行檔),可以快速驗證Rust ...
#81. 從原始碼到可執行檔 - linux與嵌入系統
從原始碼到可執行檔. 編譯原始碼,最原始的指令就是gcc helloworld.c -o helloworld,其實中間跳過了很多的過程,這中間的過程隱藏了許多過去前人所 ...
#82. [分享] Windows 下架構C/C++ 簡易IDE - 看板C_and_CPP
由於我使用之compiler 並不多,僅限於 Visual C++ (CL.exe ) Dev-C++ ... to hello.o> ) 將.s 組合語言組譯成目的檔.o,目的檔副檔名在dev-c++/ gcc ...
#83. 第三章電腦作業系統
(A)作業系統是一套程式 (B)作業系統通常是由廠商提供 (C)作業系統的目的在讓使用者 ... 一般副檔名為EXE或COM者﹐其檔案內容即為機械碼﹐每一機械碼格式可簡化如下表﹕ ...
#84. 如何建立LabView EXE(執行檔)與安裝Run-Time Engine之範例 ...
目的 :認識並建立LabView EXE(執行檔)與建立安裝. Run-Time Engine之應用與編輯操作. 範例名稱:建立LabView EXE(執行檔)與Run-Time Engin之應用編輯.
#85. 目的檔格式 - 頗龜毛
目的檔 : 原始檔--編譯-->目的檔--連結-->執行檔. 編譯後未連結的機械碼. 執行檔與目的檔結構相似,所以在在Windows底下稱為PE-COFF,LINUX為ELF。
#86. UNIX 作業系統操作簡介
列出所有檔案,包括隱藏檔 ... mv <原始檔> <目的檔> 若原始檔和目的檔在同一目錄下,可更改檔名, ... which 查詢某個執行檔是放在那個路徑之下.
#87. [轉]跟我一起寫Makefile - 程式設計物語- udn部落格
prerequisites就是,要生成那個target所需要的檔或是目標。 command也就是make需要執行的命令。(任意的Shell命令). 這是一個檔的依賴關係,也就是說 ...
#88. 允許32 位元應用程式使用2GB 以上的記憶體› vimL Blog
EXE ) 可修改通用物件檔案格式(Common Object File Format,COFF) 的二進位檔案(Binary File)。 您可使用EDITBIN 來修改目的檔(Object File)、可執行檔 ...
#89. 如何製作bat或是exe,可用exe方式執行任何檔案 - Mobile01
執行完後再把exe副檔名去掉或換掉。是最簡單達到你1樓提到的目的(且不用寫程式)。 但如一開頭我說的,這個bat檔對 ...
#90. 如何在運行執行檔時隱藏被執行的執行檔 - LabVIEW360
我寫的一個程序被做成執行檔以後,提供給同事運用。 我同事需要在他的C語言程序中,經常性呼叫我的這個EXE檔,但是,每次呼叫一次,這個EXE檔就會彈出 ...
#91. 程式設計之著作權保護?
因為軟體業界主張的著作權好像都是指編譯過的程式執行檔,而不是程式的原始碼。 ... 或間接使電腦產生一定結果為目的所組成指令組合之著作」並不限於原始碼或目的碼。
#92. 函式庫(wiki) - 尋找最初的初衷
庫和執行檔的區別是,庫不是獨立程式,他們是向其他程式提供服務的代碼。 ... 個庫或目的檔(先前由編譯器或組譯器生成)連結到一塊生成可執行程式。
#93. C 語言教學- 05 - 第一個程式@ 伊蜜澤瑞 - 痞客邦
註1:上面的out要視你實際的檔案名稱更改為像是exe等其他的字樣。 註2:這裡我們加了. ... 若你的終端機在執行了a執行檔後印出First Program!
#94. [翻譯] Linux 二進位檔中的特殊區段(section) - Ernie's Blog
一個區段(section)是目的檔(object file)中的一塊區域,包含了對於連結(link,譯註1)有用的資訊:程式的執行碼、資料、重定位資訊(relocation ...
#95. 編譯器(Compiler)與連結器(Linker)的運作原理 - 雷克斯の生活日誌
1. 建置(build)執行檔的過程包括編譯(Compile)和連結(Link)。 2. 編譯器(Compiler)把原始碼(Source code)變成機械碼(Machine code)。 3.
#96. 淺論程式源碼與目的碼在自由開源軟體授權條款裡的同與異
註一:所謂目的碼,指的是能夠直接供電腦機器判讀的執行檔格式(binary form),故或有稱之為「機器碼(Machine Code)」、「機械碼」,此亦目前市面上取得 ...
#97. 【C語言。解答】第1章 - 痞客邦
而直譯器不會產生可執行的程式碼,而是於執行原始程式時會逐一檢查敘述的語法,若正確則立即執行該 ... 原始檔案為.c,目的檔案為.obj,執行檔為.exe。
目的檔 執行檔 在 [分享] Windows 下架構C/C++ 簡易IDE - 看板C_and_CPP 的推薦與評價
零、 前言
可能是學校作業,可能是之前我發過提問文,這星期私信來函不少,
內容從命令列編譯程式碼 到 IDE 環境架構都有,
想說這部份蠻多也曾請求協助於版友,發此文做為回饋,
一次全回答完,也留予往後有需求之人做參考。
我會研究此議題,純粹乃習慣開兩個 IDE 出來,一個是 Project 上之實做;
另一個是 Project 寫到一半時,可能需要什麼小隻的副函式,或其它要驗證東西,
開一個 Visual Studio 就吃很大,所以驗證的 IDE 很少在用 Visual Studio ,
甚至嫌 Dev-C++ 還不夠小,最後以 PSPad 進行驗證上之輔助。
由於我使用之 compiler 並不多,僅限於
Visual C++ (CL.exe )
Dev-C++ / MinGW (gcc.exe / g++.exe)
故本文只以此兩套 compiler 做為說明,前文有點煩雜,後文將以 PSPad 輔助,
進行架構小型 IDE。若只對架構小型 IDE 有興趣,而對整體運作沒興趣(或已知),
直接跳到 肆、 使用 PSPad 架構小型 IDE 即可
若對本文有興趣,欲加以實做,建議可下載並安裝 TDM-gcc
https://tdm-gcc.tdragon.net/download
我安裝的是 tdm-gcc-4.5.2 (exe), 應是沒附 IDE 版的。
在說明上盡量以 Dev-C++ 4.9.9.2 之環境為說明條件。
可能有書有教,但我是看 spec try 出來的,有不錯的書歡迎推薦。
壹、 Dev-C++ 從 hello.c 到 hello.exe
假設原始碼為 hello.c,為方便解說,放到 D:\ , 絕對路徑為 D:\hello.c
基本上,只要看到 ???? 器,它「應該」就要是一個執行檔。
這裡只是小提一下,一般從 source code (.c) 一路到產生可執行之執行檔 (.exe),
大致有四個步驟,以下命令,請先按下 開始->執行(或按 WinKey+R),輸入cmd.exe
跳出黑黑像 dos 視窗的命令提示字元後才進行操作,
下述之 綠體字 部份,即為要在該黑黑的 dos 視窗(它就叫命令提示字元)裡輸入之指令。
a. 預處理器 (pre-prossor,或稱前編譯 < hello.c to hello.i> )
將程式碼 (hello.c) 裡,對於 # 及 註解部份 做處理。
如 #define 展開、#include 插入、(#if、 #ifdef、#endif) 做條件編譯處理。
dev-c++ Z:\> C:\Dev-cpp\bin\cpp.exe "D:\hello.c" "D:\hello.i"
※ 結果在 D:\ 生成 hello.i
b. 編譯器 (compiler <hello.i to hello.s> )
將剛剛預處理完之 .i 吃進來,編譯成低階組合語言。asm code 副檔名非一定,
Dev-C++/gcc 為 .c , vs 為 .asm
dev-c++ Z:\> C:\Dev-Cpp\libexec\gcc\mingw32\3.4.2\cc1.exe
"D:\hello.c" -o "D:\hello.s"
※ 結果在 D:\ 生成 hello.s
注意,上面的 cc1.exe ,最後那個是數字 1 (one),非小寫英文 L。
c. 組譯器 (assembler <hello.s to hello.o> )
將 .s 組合語言組譯成目的檔 .o,目的檔副檔名在 dev-c++/ gcc
為 .o , vs 為 .obj
dev-c++ Z:\> C:\Dev-Cpp\bin\as.exe "D:\hello.s" -o "D:\hello.o"
※ 結果在 D:\ 生成 hello.o
d. 連結器 ( linker < hello.o + *.o to hello.exe > )
這是最後一步驟,將剛剛出來的 .o 再連結成 .exe 執行檔出來, 但這個步驟實在是
太讓人覺得麻煩,我也沒弄得很清楚到底要連哪些 .o 出來,實際上是調用
C:\Dev-Cpp\bin\ld.exe ,此處只好調用 gcc.exe
dev-c++ Z:\> C:\Dev-Cpp\bin\gcc.exe D:\hello.o -o D:\hello.exe
※ 結果在 D:\ 生成 hello.exe
事實上真正將 .o 轉到 .exe 的是 ld.exe 連結器 (linker),並非 gcc.exe,
有興趣的話可以詳閱 ld.exe 參數說明,光是一個 hello.exe 要轉過去,
至少要含五、六個 library 裡面,已組譯好的 .o ,這些 .o 目的檔,
大多在 C:\Dev-Cpp\lib 、 C:\Dev-Cpp\lib\gcc\mingw32\3.4.2 裡面
關於 linker 部份,可參考 james732 版大文章 #1DgrW4a5 (C_and_CPP)
這篇寫得很讚。
貮、 談整合性程式
For Dev-C++ / MinGW
如上所見,光是輸出一個 "Hello, World!!" 就這麼麻煩
(1) 先從 hello.c 到 hello.i, pre-processor, cpp.exe
(2) 再從 hello.i 到 hello.s, compiler, cc1.exe
(3) 接著 hello.s 到 hello.o, assembler, as.exe
(4) hello.o + (*.o) 到 hello.exe, linker, ld.exe
這不論是 Dev-C++ 或是 Visual Studio 、 Broland C,即使 Turbo C 也必須這麼做。
但各家發展這些時,都會有大多再開發一隻屬整合這四個程式之另一支程式出來,
如 gcc.exe 便為如此,使用它,甚至可跳過很多步驟,直接從 .c 產生出 .exe 出來
Z:\> C:\Dev-cpp\bin\gcc.exe -o D:\hello.exe D:\hello.c
如果不只一個 .c ,有其它的 .h 等之類的話
Z:\> C:\Dev-cpp\bin\gcc.exe -o D:\hello.exe D:\hello.c D:\h1.h D:\h2.h
D:\h1.c D:\h2.c
這些可容易產生,甚至要叫 asm code 出來也可
Z:\> C:\Dev-cpp\bin\gcc.exe -S D:\hello.c
其它的功能不少,點到為止。
For Visual C++
Visual C++ 算是我見過較為例外的,整個從 .c 到 .exe,除了有一個 Linker.exe 是做
連結動作,其它全部功能都塞到 CL.exe 裡面去。但若要用 CL.exe 之前,在命令提示字
元下必須先呼叫 vsvars32.bat 進行環境變數設定
Z:\> call "%VS100COMNTOOLS%vsvars32.bat" For Visual C++ 2010
Z:\> call "VS90COMNTOOLS%vsvars32.bat" For Visual C++ 2008
接下來才可進行 CL.exe 上之使用
產生 hello.exe, hello.obj
Z:\> CL.exe Fe"D:\hello.exe" D:\hello.c
產生 hello.exe, hello.obj, hello.asm
Z:\> CL.exe Fe"D:\hello.exe" D:\hello.c /FAs
也可進行多個 .c/.h 進行編譯。
參、 MinGW 與 Dev-C++
MinGW 我認為環境架構上一直不是那麼友善,於是如版友之建議,下載了 tdm-gcc-4.5.2
這套下來用 (網址在最一開始地方有附),它和上面說的 Dev-C++ 所使用編譯方式、使用
之 exe、語法,並無顯著差異,唯只有路徑上不一樣,如我手邊安裝完後, gcc.exe 是
位於 C:\MinGW32\bin 底下,故上述所有之 C:\Dev-cpp\bin 全都改成 C:\MinGW32\bin
即可,甚至可以設置 path 之環境變數,這樣下來也不用每次都以絕對位置方式做呼叫。
肆、 使用 PSPad 架構小型 IDE
這方法是有缺點的,要改善的話看 陸、 PSPad 多檔編譯
類似的軟體不只 PSPad,之前還碰過 UltraEdit、NotePad++,
選用 PSPad 之原因在於它免費,同時還類似有 函式導覽、專案管理 等功能,
有興趣的話可再摸摸其他類似之軟體。
PSPad 要下載對版本才好用,確保開始後,設定->語法高亮設定 是看得到的。
若要用 PSPad 去當編輯器,以 Dev-C++ 之 gcc.exe 為 compiler,設定如下
(1) 點擊 設定-> 語法高亮設定
(2) 程式語言選到 C/C++,右半窗格選擇「編譯器」
(3) 「編譯器」輸入 C:\Dev-cpp\bin\gcc.exe
「參數 」設 -o "%Dir%%Name%.exe" "%File%"
「編譯後執行」設 cmd /c "%Dir%%Name%.exe" &pause
下面再勾選
編譯前儲存所有檔案、擷取程式輸出結果。
「編譯器」那裡,若已安裝了 MinGW,建議不要再設 Dev-cpp 裡之 gcc
版本差太多,一個是 3.4.2,一個是 4.5.2
路徑設 C:\MinGW32\bin\gcc.exe
若 MinGW 已有註冊環境變數的話,可直接輸入 gcc.exe 即可,
用不到 Dev-cpp 的話,也可把它移除。
若是慣用 C++ 寫的話,該設的是 g++.exe,非 gcc.exe。
好了之後每次用 PSPad 寫好碼,直接輸入 Ctrl+F9,
編譯器給的所有錯誤與警告訊息,會出現在下面之 Log 視窗,
若無誤時將會執行所生成之檔案。
這方法有缺點,一次只能編譯生成一個檔案出來,下面再說一點點 batch。
伍、 完全不使用 IDE, 只想看 source code 產生之結果
通常我收到「一陀檔案」,說他的程式沒錯,第一個動作是先看執行結果時,
我並不會直接開任何 IDE 出來,這樣要把所有檔案都拉到 IDE 裡面去,
我用的是 batch 方式產生。 在桌面上建立一個 Toilet.bat,內容如下
@echo off
setlocal enabledelayedexpansion
SET "instr="c:\Dev-Cpp\bin\gcc.exe" -o "%~dp1dev_c_multi.exe""
FOR %%I IN (%*) DO (
SET instr=!instr! "%%~I"
)
SET instr=!instr! -O2
!instr!
"%~dp1dev_c_multi.exe"
endlocal
echo. &pause
上面的 "c:\Dev-Cpp\bin\gcc.exe" 這一樣可以改,
我預設輸出檔名是 dev_c_multi.exe,使用方式不用在命令提示字元底下一一輸入,
而且 直接把 "所有" 用到的 .c .h 全都拖到 Toilet 裡面去。
就像是要刪除檔案,把檔案拖到資源回收桶裡面一樣,
只是這次是把所有檔案拖到廁所(Toilet.bat)裡面去。
編譯失敗會顯示錯誤訊息,編譯成功時,會在檔案的地方產生出 dev_c_multi.exe,
並會執行它。
visual c++ 我也寫了一份,
@echo off
call "%VS100COMNTOOLS%vsvars32.bat"
%~d1
cd %~d1
cd "%~dp1"
setlocal enabledelayedexpansion
SET "instr=CL.exe /Fe"%~dp1v10_noOpt.exe" "
FOR %%I IN (%*) DO (
CL.exe /Fo"%%~dpnI.obj" %%I
SET instr=!instr! "%%~dpnI.obj"
)
!instr!
endlocal
echo. &echo compile finish, execute now...
pause & cls
"%~dp1v10_noOpt.exe"
del "%~dp1*.obj"
pause
上述以 visual c++ 2010 為例,要換成是 2008 的話改
"%VS90COMNTOOLS%vsvars32.bat" ,預設檔名為 vc10_noOpt.exe。
使用方式一樣是拖進來即可。
上面這些用 batch 完成,是「無腦」方式, compile 過程中勢必會有些警告出來,
但若單純在寫 console 程式,應還算勘用。
陸、 PSPad 多檔編譯
新增 PSPad 專用之 batch file
基於 第肆點 所產生之缺點,加上第五點,其實我們已可在
PSPad 下連結起所有相關之 .h / .c / .cpp,這裡再新增一個 DevC.bat,
內容如下
@echo off
SET "MyPath=%~dpf1"
SET "MyPath="%MyPath%\*.h" "%MyPath%\*.c" /b"
SET "Output="%~dpf1Main.exe""
SET /P UserInput=Input the execute filename(Default:%Output%):
IF NOT "%UserInput%"=="" SET "Output="%~dpf1%UserInput%.exe""
SET "Instr=C:\Dev-Cpp\bin\gcc.exe -o %Output% "
SETLOCAL EnableDelayedExpansion
FOR /F "tokens=* delims=" %%A in ('dir !MyPath! /b') DO (
:: echo %%A
SET Instr=!Instr! "%~dpf1%%A"
)
%Instr%
ENDLOCAL
echo. &echo compile finished, it will execute now..
pause & cls
%Output%
pause
完成之後,存在 C:\ 底下,絕對路徑為 C:\DevC.bat
與上述一樣,若有安裝 MinGW ,建議Instr=C:\Dev-Cpp\bin\gcc.exe
改為 Instr=C:\MinGW32\bin\gcc.exe ,C++ 的話除了將 gcc 改 g++ 外
"%MyPath%\*.c" 改成 "%MyPath%\*.cpp"。
PSPad 下之設定
在 PSPad 那裡之設定如下所述
(1) 點擊 「設定」、「語法高亮設定」
(2) 點擊 「C/C++」、「編譯器」
(3) 「編譯器」設 「C:\DevC.bat」
「參數 」設 「"%Dir%"」, 其他清空,而 Log 之 CheckBox
只勾 「編譯前儲存檔案」,
其它的「擷取程式的輸出結果」、「隱藏輸出視窗」千千萬萬不要勾。
實際上這改善方案仍有限,它是指定當下 Active File 之路徑,
去找該資料夾底下之所有 .c/.cpp 與 .h,同時把它們全都抓進來編譯,
意思是如果找到該資料夾底下,檔案內容有兩個 main ,那就失敗了。
其實最好之方式,應是去分析該 PSPad 之 project file - .ppr,
但問題已愈來愈複雜,此處僅以概述,不再深入進去。
實際操作流程
實際上,在 PSPad 裡按下 Ctrl+F9 時,程式會提示,請輸入一輸出檔名,
這裡預設是 (資料夾路徑\Main.exe),如果直接按 Enter 的話,就以預設輸出;
如果輸入 a 的話,輸出會放在 (資料夾路徑\a.exe),自動加上 .exe,
若不想每次自己手動輸入,想直接生成的話,在上面之 DevC.bat 裡面,
SET /P UserInput=Input the execute filename(Default:%Output%):
IF NOT "%UserInput%"=="" SET "Output="%~dpf1%UserInput%.exe""
這兩行直接刪除它。完成之後,若順利 compile 出執行檔,程式也會自動執行。
柒、 其他未盡與注意事項
本文其實有點用硬爆法把要的結果爆出來, (好的方法其實不想再花時間去橋),
過程中用到不算淺的 batch command,若要再自己做客制化之環境,有幾個建議
可再供參考
1. 弄熟 make.exe / cmake.exe / nmake.exe(for vs)
2. 弄熟 batch command
3. 弄熟 gcc.exe / g++.exe / CL.exe
4. 弄熟 pspad/ultraedit 之環境變數
用 UltraEdit , PSPad , Notepad++ 這類型軟體當輔助 IDE,只能開發一些簡單之
程式,若程式本身架構複雜,並不適合用這類型小軟體協助,缺點為在 linker ,
compiler 那裡浪費不少不必要時間,且其並無 IDE 開發環境下之 debugger 來得簡便。
若認為此文敘述有所不妥,或敘述上有所誤失、觀念不正確,
或有其他建議者,請不吝指出、補充、指教,小弟當感激不盡。
--
YouLoveMe() ? LetItBe() : LetMeFree();
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 180.177.78.41
純粹只因摸過 UltraEdit / PSPad, 兩者相較下我選用 PSPad (免費)
... <看更多>