交叉編譯時選項 march 的必要性

2021-10-14 02:45:38 字數 330 閱讀 8301

每個編譯器都有預設的-march選項,其值一般都隨主流晶元走。**

比如老一點的arm交叉編譯器,預設的選項可能是-march=armv4t,新一點的則可能是-march=armv6等等。

用老編譯器編出來的二進位制檔案,只要沒使用特殊指令集,大多數可以跑在新**上,因為arm的向下相容。

但是用新編譯器預設選項編出來的二進位制可執行檔案,基本上無法在老的平台上跑,因為新架構可能會引入一些新指令。

例如個人在交叉編譯樹莓派4b時候沒有新增

-march=armv7-a
導致了tan,pow等函式沒有報錯卻無法使用,返回值是0,猜測是由於使用的硬浮點計算?

arm處理器編譯選項 march的作用

arm處理器每個核使用不同的arm體系結構版本,每個版本的對應指令集也不同,具體如下所示 arm體系結構總結 核心 體系結構 arm1 v1arm2 v2arm2as,arm3 v2aarm6,arm600,arm610 v3arm7,arm700,arm710 v3arm7tdmi,arm710t...

arm處理器編譯選項 march的作用

arm處理器每個核使用不同的arm體系結構版本,每個版本的對應指令集也不同,具體如下所示 arm體系結構總結 核 體系結構 arm1 v1arm2 v2arm2as,arm3 v2aarm6,arm600,arm610 v3arm7,arm700,arm710 v3arm7tdmi,arm710t,...

交叉編譯的一些選項

這是 c 與 c 編譯器命令。預設值一般是 gcc 與 g 這是用於預處理階段的選項。ar 函式庫開啟包程式。預設命令是 ar as 組合語言編譯程式。預設命令是 as gcc編譯程式的基本過程 cross compile gcc根據輸入檔案的字尾來確定檔案的型別,然後根據使用者的編譯選項 包括優化...