日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux下mips裸机编译,裸机交叉编译器输入

發布時間:2025/3/12 linux 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux下mips裸机编译,裸机交叉编译器输入 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

裸機交叉編譯器的輸入限制是什么…因為它不編譯帶有指針或mallocs的程序…或任何需要比底層硬件更多的東西….還有1如何找到這些局限性..

我還想問一下…我為目標mips構建了交叉編譯器..我需要使用此交叉編譯器創建mips可執行文件…但是我無法找到可執行文件的位置…我找到了mipsel-linux-cpp的1個可執行文件,應該對它進行編譯,組裝和鏈接,然后生成a.out,但它沒有這樣做…

但是./cc1提供了mips程序集…….

有一個安裝文件夾,其中包含一個使用i386程序集的gcc可執行文件,然后給出一個exe …我不明白當我將目標指定為mips時,gcc exe如何給i386而不提供mips程序集.

請幫助我真的無法理解什么是幸?!?/p>

我遵循了以下步驟.

1.安裝了binutils 2.19

2.為gip配置了gcc.(g,核心)

解決方法:

我建議您應該開始兩個單獨的問題.

GNU工具鏈沒有任何OS依賴性,但GNU庫卻有. GCC的大多數裸機交叉構建使用Newlib C庫,該庫提供了一組syscall存根,您必須自己映射到目標.這些存根包括實現流I / O和堆管理所必需的低級調用.根據您的需要,它們可以非常簡單也可以非常復雜.如果唯一的I / O支持是到UART的stdin / stdout / stderr,那么這很簡單.您不必實現所有內容,但是如果您不實現I / O存根,則將無法使用例如printf().要使malloc()工作,必須實現sbrk()/ sbrk_r()syscall.

GNU C庫將與Newlib作為其基礎庫一起正常使用.如果使用C,則C運行時啟動程序(通常為crt0.s)必須包括靜態初始化程序循環,以調用代碼可能包含的任何靜態對象的構造函數.當然,運行時啟動還必須初始化處理器,時鐘,SDRAM控制器,計時器,MMU等.那是您的責任,而不是編譯器的責任.

我沒有MIPS目標的經驗,但是所有處理器的原理都是相同的,有一篇非常有用的文章叫做“Building Bare Metal ARM with GNU”,您可能會發現它很有用,很多文章都將是有用的-特別是移植有關實現Newlib存根的部分.

關于另一個問題,如果您的編譯器名為mipsel-linux-cpp,則它不是“裸機”構建,而是Linux構建.同樣,該可執行文件并不是真正的“編譯,匯編和鏈接”,而是單獨調用預處理器,編譯器,匯編器和鏈接器的驅動程序.必須正確配置它才能調用跨工具而不是宿主工具.我通常分別調用鏈接器,以執行關于鏈接哪個標準庫(-nostdlib)的決定,并且還因為當應用程序由多個執行單元組成時,這樣做更有意義.除了這里我不能提供太多幫助,因為我一直使用明顯比我耐心得多的人構建的GNU-ARM工具,而且該工具托管在Windows上,在這種情況下,調用宿主工具鏈的可能性較小(一個為什么我也避免了那些依賴Cygwin的工具鏈)

標簽:mips,compiler-construction,linux

來源: https://codeday.me/bug/20191107/2002889.html

總結

以上是生活随笔為你收集整理的linux下mips裸机编译,裸机交叉编译器输入的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。