在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美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將這些步驟封裝起來,從而提供給用戶一個簡化的流程。

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

    關注

    6037

    文章

    44558

    瀏覽量

    635310
  • C語言
    +關注

    關注

    180

    文章

    7604

    瀏覽量

    136827
  • 編譯
    +關注

    關注

    0

    文章

    657

    瀏覽量

    32871
收藏 人收藏

    評論

    相關推薦

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

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

    教你一招如何分辨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 ?1031次閱讀

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

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

    圖片轉C語言工具bin2c.exe

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

    如何一招辨別iPhone X山寨機

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

    一招讓手機屏立馬干凈

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

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

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

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

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

    bin文件C語言可以做嗎?

    說實話,在我的認知里,bin文件C語言是不可能的,即便能轉,也是那種非常簡單的程序,比如:點燈。
    的頭像 發表于 08-17 09:04 ?1901次閱讀
    <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.2w次閱讀

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

    是處理器可以直接執行的指令,而 C 語言代碼則是人類可讀的高級編程語言代碼。 然而,如果你想要從 .hex
    的頭像 發表于 09-02 10:37 ?2288次閱讀
    主站蜘蛛池模板: 新版天堂中文在线8官网| 免费又黄又爽的禁片视频| 狠狠干狠狠干狠狠干| 亚洲无吗在线视频| 日韩一级片在线观看| 伊人网在线观看| 六月丁香深爱六月综合激情| 亚洲第二色| 国产精品一区二区综合| www.av天天| 五月综合色婷婷影院在线观看| 国产欧美高清| 手机在线完整视频免费观看| 网站毛片| 18岁禁黄色| 中文字幕一区视频| 福利在线播放| 亚洲图色视频| αv天堂| 欧美色淫网站免费观看| 四虎影视最新网址| 真实的国产乱xxxx在线| 69日本xxxxxxxxx29| 青草青青视频| 色婷婷狠狠干| 正在播放久久| 爱爱免费视频网站| 中文字幕一区二区三区四区| 欧美色视频日本| 久久婷五月| 五月婷婷视频在线观看| 亚洲高清资源| 国产精品久久久久久久人热| 国产色婷婷精品免费视频| 欧美性xxxx极品高清| 欧美一区二区三区免费| 美女视频久久| 手机亚洲第1页| 日本片巨大的乳456线观看| 亚洲人成电影| 午夜禁片|