91在线观看视频-91在线观看视频-91在线观看免费视频-91在线观看免费-欧美第二页-欧美第1页

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

一招掌握C語言代碼如何變成bin文件?

朱老師物聯網大講堂 ? 2024-04-13 08:10 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一、關鍵步驟

單片機的源代碼轉換成二進制文件(bin文件)的過程涉及幾個關鍵步驟,這些步驟是編譯過程中的標準組成部分,主要包括以下步驟:預處理、編譯、匯編、鏈接、二進制轉換。

3f9950ea-f92a-11ee-9118-92fbcf53809c.png

01

預處理

3fe0ee00-f92a-11ee-9118-92fbcf53809c.png

這是編譯過程的第一步。預處理器采取預處理指令,處理諸如宏定義(#define)、條件編譯(#ifdef, #ifndef, #endif)等。此步驟的輸出是擴展的源代碼,包含所有頭文件和宏展開的結果。

02

編譯

3fe0ee00-f92a-11ee-9118-92fbcf53809c.png

在這一步,編譯器將預處理后的源代碼轉換為匯編代碼。編譯器首先進行詞法分析、語法分析和語義分析,生成抽象語法樹(AST),然后將AST轉換為目標機器的匯編指令。這一步是編譯過程中最復雜的部分,它包括優化代碼以提高效率。

03

匯編

3fe0ee00-f92a-11ee-9118-92fbcf53809c.png

匯編器將編譯步驟產生的匯編代碼轉換為機器代碼。每一條匯編指令都對應一條機器指令。匯編結果是一系列的機器指令,通常被存儲在一個目標文件(如ELF格式)中。

04

鏈接

3fe0ee00-f92a-11ee-9118-92fbcf53809c.png

鏈接器的作用是將一個或多個目標文件合并成一個單一的可執行文件。在這一步中,還會解決外部引用,即將所有模塊對外部函數和變量的引用與其定義關聯起來。如果你的單片機項目中包含了多個源文件或者使用了外部庫,鏈接器會將它們與你的主程序合并為一個完整的程序。

05

二進制轉換

3fe0ee00-f92a-11ee-9118-92fbcf53809c.png

最后,根據需要,可將鏈接器輸出的可執行文件轉換為純二進制格式(bin文件)。這是一個可選步驟,具體取決于目標系統和開發環境。某些開發環境在鏈接階段直接生成bin文件,而其他環境可能會生成hex文件或其他格式的文件,需要使用專門的工具將這些文件轉換為bin格式。

這個過程可能會有些許差異,具體取決于使用的編譯器和開發環境。例如,在使用ARM單片機和Keil開發環境時,整個流程可能會稍有不同,但基本原理是相同的。

3f8f8286-f92a-11ee-9118-92fbcf53809c.png二、通用示例

對于單片機代碼的編譯過程,不同的編譯器和工具鏈有不同的指令或命令。以下是一個通用的示例,這些步驟在使用GNU工具鏈(比如GNU Compiler Collection, GCC)時的對應命令。

01

預處理

3fe0ee00-f92a-11ee-9118-92fbcf53809c.png

400bb054-f92a-11ee-9118-92fbcf53809c.png

這條命令將執行預處理操作,.c 是你的源代碼文件,.i 是處理過的源代碼文件。

02

編譯

3fe0ee00-f92a-11ee-9118-92fbcf53809c.png

401ce2a2-f92a-11ee-9118-92fbcf53809c.png

這條命令將預處理過的文件編譯成匯編代碼,.s 是生成的匯編代碼文件。

03

匯編

3fe0ee00-f92a-11ee-9118-92fbcf53809c.png

4032282e-f92a-11ee-9118-92fbcf53809c.png

as 是GNU匯編器,這條命令將匯編代碼轉換為目標代碼(機器代碼),.o 是目標文件。

04

鏈接

3fe0ee00-f92a-11ee-9118-92fbcf53809c.png

40426bee-f92a-11ee-9118-92fbcf53809c.png

ld 是GNU鏈接器,這條命令將一個或多個目標文件鏈接成一個完整的二進制可執行文件 program

05

二進制轉換

3fe0ee00-f92a-11ee-9118-92fbcf53809c.png

假設我們使用的是ARM體系結構,可能會使用 objcopy 工具來從鏈接后的可執行文件生成純二進制文件:

40522016-f92a-11ee-9118-92fbcf53809c.png

在這里,program 是鏈接器生成的可執行文件,而 program.bin 是生成的純二進制文件。

請注意,以上命令是在命令行環境中使用的,并且是基于GCC工具鏈。如果你使用的是其他編譯器或集成開發環境(IDE),比如Keil、IAR或MPLAB等,步驟會相似,但是具體的命令或操作會有所不同。IDE通常提供圖形界面和按鈕來執行這些操作,而不需要手動輸入命令。

另外,對于某些單片機,你可以使用特定的IDE提供的編譯按鈕來自動完成這些步驟,而無需手動執行每個命令。這些IDE將這些步驟封裝起來,從而提供給用戶一個簡化的流程。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 單片機
    +關注

    關注

    6067

    文章

    44989

    瀏覽量

    650366
  • C語言
    +關注

    關注

    180

    文章

    7632

    瀏覽量

    141685
  • 編譯
    +關注

    關注

    0

    文章

    679

    瀏覽量

    33982
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    C語言變成可執行文件的四大步驟

    C語言變成最終的可執行文件,需要經過四步。
    發表于 10-18 10:37 ?5918次閱讀

    教你一招如何分辨PCB板層數

    教你一招如何分辨PCB板層數
    發表于 04-23 06:36

    教你一招如何去實現傅立葉變換算法?

    教你一招如何去實現傅立葉變換算法?
    發表于 04-30 06:05

    教你一招怎樣去選擇合適的CPLD

    CPLD有哪些優點?教你一招怎樣去選擇合適的CPLD
    發表于 05-06 09:48

    教你一招如何去選擇射頻濾波器?

    教你一招如何去選擇射頻濾波器?
    發表于 05-28 07:05

    筆記本硬盤保養15(一招都馬虎不得)

    筆記本硬盤保養15(一招都馬虎不得) 硬盤保養也是門學問  如今快節奏的工作造就了部分“拆硬盤”的人,小編所說的“拆硬盤
    發表于 01-21 15:28 ?1084次閱讀

    巧解任何電腦的開機密碼(小小一招就搞定)

    巧解任何電腦的開機密碼(小小一招就搞定) 小小一招巧解任何電腦的開機密碼,無需任何工具,無需放電 任
    發表于 02-25 10:57 ?840次閱讀

    圖片轉C語言工具bin2c.exe

    電子發燒友網站提供《圖片轉C語言工具bin2c.exe.rar》資料免費下載
    發表于 06-05 09:00 ?23次下載

    如何一招辨別iPhone X山寨機

    隨著iPhone X上市后的大賣,大波的山寨機也是洶涌而來。iPhone X是怎樣被步步山寨的?今天小編就帶你了解下怎么一招辨別真假。
    發表于 12-13 09:44 ?1.4w次閱讀

    一招讓手機屏立馬干凈

    手機屏幕油膩還滿是手印?教你一招,立馬干凈亮閃閃
    的頭像 發表于 08-27 17:26 ?6969次閱讀

    C語言的源代碼文件和目標文件與可執行文件的詳細介紹

    1、源代碼文件 存放程序代碼文件,即我們編輯代碼文件,稱為源
    的頭像 發表于 02-18 11:52 ?9236次閱讀

    BIN或.ASM文件轉換成C文件常見步驟

    足夠的了解。 通常的操作都是: 第步:先進行解密,提供二進制代碼BIN文件。 第二步:將BIN文件
    的頭像 發表于 12-07 10:29 ?1.1w次閱讀

    bin文件C語言可以做嗎?

    說實話,在我的認知里,bin文件C語言是不可能的,即便能轉,也是那種非常簡單的程序,比如:點燈。
    的頭像 發表于 08-17 09:04 ?2243次閱讀
    <b class='flag-5'>bin</b><b class='flag-5'>文件</b>轉<b class='flag-5'>C</b><b class='flag-5'>語言</b>可以做嗎?

    keil如何生成bin文件

    Keil是種集成開發環境(IDE),專為ARM架構的嵌入式系統開發而設計。在Keil中生成bin文件是將代碼編譯并轉換為可執行文件的過程。
    的頭像 發表于 12-15 13:43 ?1.4w次閱讀

    hex文件如何查看原c語言代碼

    是處理器可以直接執行的指令,而 C 語言代碼則是人類可讀的高級編程語言代碼。 然而,如果你想要從 .hex
    的頭像 發表于 09-02 10:37 ?4927次閱讀
    主站蜘蛛池模板: 欧美视频亚洲色图 | 日韩精品一区二区三区毛片 | 手机看片日韩在线 | swag系列国产精品 | 欧美综合视频 | 在线观看免费视频一区 | 久久久久久久国产视频 | 人操人操 | 日本在线视频一区二区三区 | 三级毛片在线免费观看 | 在线播放免费观看 | 欧美videos 另类| 黄a免费| 手机在线黄色网址 | 四虎影院在线播放 | 欧美色婷婷天堂网站 | 97久久天天综合色天天综合色 | 色噜噜中文网 | 天天曰天天操 | 色亚洲欧美 | 天堂中文网 | 尤物蜜芽福利国产污在线观看 | 五月婷婷色丁香 | 色在线网站免费观看 | 色妞影视| 人人搞人人干 | 97精品伊人久久大香线蕉 | 国产在线视频资源 | 特级毛片s级全部免费 | 女的扒开尿口让男人桶 | 欧美a免费 | 511韩国理论片在线观看 | 黄色午夜视频 | 真爽~张开腿~让我插 | 国产在线播放成人免费 | 国产大乳喷奶水在线看 | 国产精品乳摇在线播放 | 无毒不卡在线观看 | 婷婷激情五月 | 99热久久久久久久免费观看 | 男人天堂资源站 |