国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

交叉編譯器介紹

這篇具有很好參考價值的文章主要介紹了交叉編譯器介紹。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

交叉編譯器

簡介

? 要在 X86 的電腦上編譯出能夠在 Arm 上運行的程序,我們必須明確告訴編譯器,編譯生成的可執(zhí)行文件需要以 Arm 指令集的標(biāo)準(zhǔn)編碼。開發(fā)者們?yōu)椴煌男酒_發(fā)了不同的編譯器,比如針對 Arm 平臺的 arm-linux-gcc,針對 mips 平臺的 mips-linux-gnu-gcc,這些編譯器都是基于 GCC 針對具體的架構(gòu)指令集進(jìn)行對應(yīng)配置,所以它們在運行的時候就就會生成和該目標(biāo)平臺對應(yīng)的可執(zhí)行文件。

? 交叉編譯工具鏈的一般命名規(guī)則為:arch [-vendor] [-os] [-(gnu)eabi]-gcc

arch - 芯片架構(gòu),比如32位的Arm架構(gòu)對應(yīng)的arch為arm,64位的Arm架構(gòu)對應(yīng)的arch為aarch64
verdor -工具鏈提供商,大部分工具鏈名字里面都沒有包含這部分。
os - 目標(biāo)操作系統(tǒng)
eabi - 嵌入式應(yīng)用二進(jìn)制接口
示例
  • arm-none-eabi編譯器

    這種編譯器的名字中沒有包含操作系統(tǒng)的信息,用于編譯 ARM 架構(gòu)的裸機系統(tǒng)(包括 ARM Linux 的 boot、kernel,不適用編譯 Linux 應(yīng)用 Application)。一般適合 ARM7、Cortex-M 和 Cortex-R 內(nèi)核的芯片使用,M3之類的單片機都使用的是這種編譯器,他使用的是 newlib 這個專用于嵌入式系統(tǒng)的C庫,所以不支持那些跟操作系統(tǒng)關(guān)系密切的函數(shù),比如fork(2)。

  • armcc

    ? ARM 公司推出的編譯工具,功能和 arm-none-eabi 類似,可以編譯裸機程序(u-boot、kernel),但是不能編譯 Linux 應(yīng)用程序。armcc一般和ARM開發(fā)工具一起,Keil MDK、ADS、RVDS和DS-5中的編譯器都是armcc。

  • arm-none-linux-(gnu)eabi(hf)編譯器

    arm-linux-gnueabi-gcc 和 aarch64-linux-gnu-gcc 適用于ARM9、ARM11、Cortex-A 系列芯片,前者針對 32 位芯片,后者針對 64 位芯片,它使用的是 glibc 庫。可以用來編譯 ARM 架構(gòu)的 u-boot、Linux內(nèi)核、linux應(yīng)用等。32位編譯器一般默認(rèn)都是軟件浮點,對應(yīng)的64位為aarch64-none-linux-(gnu)eabi,64位編譯器默認(rèn)都是硬件浮點。

    32 位的 Arm 和 64 位的 Arm,它們的指令集是不同的,所以需要使用不同的工具鏈。當(dāng)然,Arm64 為了保證前向兼容,提供了一個 32 位的兼容模式,所以我們用 arm-linux-gnueabi-gcc 編譯的應(yīng)用程序也是可以直接在Arm64 的系統(tǒng)上運行的,但是 Linux Kernel 和 U-Boot 就不行,除非你提前把 CPU 切換到 32 位模式。曾經(jīng)有個項目使用了一顆四核的 Arm64 芯片,但是內(nèi)存只有64M,為了節(jié)省空間,在 CPU 運行到 U-Boot 之前,我們就把它切到了 32 位模式,后面的 U-Boot、Linux Kernel,應(yīng)用全部都用 32 位編譯,加上 Thumb 指令集,節(jié)省了不少空間。

    softfp: armel架構(gòu)(對應(yīng)的編譯器為 arm-linux-gnueabi-gcc )采用的默認(rèn)值,用fpu計算,但是傳參數(shù)用普通寄存器傳,這樣中斷的時候,只需要保存普通寄存器,中斷負(fù)荷小,但是參數(shù)需要轉(zhuǎn)換成浮點的再計算。

    hard: armhf架構(gòu)(對應(yīng)的編譯器 arm-linux-gnueabihf-gcc )采用的默認(rèn)值,用fpu計算,傳參數(shù)也用fpu中的浮點寄存器傳,省去了轉(zhuǎn)換,性能最好,但是中斷負(fù)荷高。

  • arm-eabi-gcc

    Android ARM 編譯器。

  • arm-none-uclinuxeabi-gcc 和 arm-none-symbianelf-gcc

    arm-none-uclinuxeabi 用于uCLinux;arm-none-symbianelf 用于symbian。

下載鏈接

? 鏈接1:http://releases.linaro.org/components/toolchain/binaries/

? 鏈接2:https://mirrors.tuna.tsinghua.edu.cn/armbian-releases/_toolchain/

? 鏈接3:https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads

常見問題

Q1:64位Linux系統(tǒng)上安裝了32位的交叉編譯器報錯。

arm-linux-gcc -v 
/FriendlyARM/toolschain/4.4.3/bin/arm-linux-gcc: 15: exec: /FriendlyARM/toolschain/4.4.3/bin/.arm-none-linux-gnueabi-gcc: not found

A1:sudo apt-get install libc6-i386

參考鏈接
  • https://aijishu.com/a/1060000000023713

具體操作

  1. 將 arm-linux-gcc-4.6.4-arm-x86_64.tar.bz2 放至某個目錄下 /home/gxy/File

  2. 在/usr/local下通過mkdir建立一個文件夾arm_gcc,并給其權(quán)限:

    sudo mkdir /usr/local/arm_gcc
    sudo chmod 777 /usr/local/arm_gcc
    
  3. 將arm-linux-gcc-4.6.4-arm-x86_64.tar.bz2 解壓至該目錄下:

    tar -xjvf arm-linux-gcc-4.6.4-arm-x86_64.tar.bz2 -C /usr/local/arm_gcc

  4. 設(shè)置環(huán)境變量

    sudo vi /etc/profile

  5. 在文件末尾添加環(huán)境變量(第一個目錄下的bin,根據(jù)自己的實際情況來):

    export PATH=$PATH:/usr/local/arm_gcc/arm-linux-gcc/bin
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/arm-linux-gcc/lib
    
  6. 重新加載環(huán)境變量文件:

    source /etc/profile

  7. 檢驗是否安裝成功

    arm-linux-gcc -v文章來源地址http://www.zghlxwxcb.cn/news/detail-462771.html

到了這里,關(guān)于交叉編譯器介紹的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • [筆記]ARMv7/ARMv8 交叉編譯器下載

    [筆記]ARMv7/ARMv8 交叉編譯器下載

    開發(fā) Cortex-A7、Cortex-A72 或其他 ARM 架構(gòu) profile 芯片時,經(jīng)常需要下載對應(yīng)架構(gòu)的交叉編譯器,所以寫這篇筆記,用于記錄一下交叉編譯器下載流程,免得搞忘。 編譯環(huán)境:ubuntu 虛擬機 下載地址 我們可以從 ARM 官網(wǎng)的 Arm Developer下載交叉編譯器,這個網(wǎng)站也包含幾乎所有的 A

    2024年02月02日
    瀏覽(34)
  • Linux安裝配置ARM交叉編譯器arm-linux-gnueabihf-gcc

    Linux安裝配置ARM交叉編譯器arm-linux-gnueabihf-gcc

    ARM交叉編譯器是一種用于在一種架構(gòu)(通常是x86或x86-64)上生成在另一種架構(gòu)(如ARM)上運行的程序的工具。這種情況稱為交叉編譯,因為編譯器和相關(guān)工具在不同的體系結(jié)構(gòu)之間進(jìn)行交叉工作。 主要用途如下: 嵌入式開發(fā): ARM交叉編譯器通常用于嵌入式系統(tǒng)開發(fā),其中

    2024年02月01日
    瀏覽(31)
  • 交叉編譯器 arm-linux-gnueabi 和 arm-linux-gnueabihf 的區(qū)別

    自己之前一直沒搞清楚這兩個交叉編譯器到底有什么問題,特意google一番,總結(jié)如下,希望能幫到道上和我有同樣困惑的兄弟…… ABI: 二進(jìn)制應(yīng)用程序接口(Application Binary Interface (ABI) for the ARM Architecture) 在計算機中,應(yīng)用二進(jìn)制接口描述了應(yīng)用程序(或者其他類型)和操作系統(tǒng)之

    2024年04月11日
    瀏覽(32)
  • 深度學(xué)習(xí)AI編譯器-LLVM簡介

    深度學(xué)習(xí)AI編譯器-LLVM簡介

    LLVM的命名最早來源于底層語言虛擬機(Low Level Virtual Machine)的縮寫。它是一個用于建立編譯器的基礎(chǔ)框架,以C++編寫。創(chuàng)建此工程的目的是對于任意的編程語言,利用該基礎(chǔ)框架,構(gòu)建一個包括編譯時、鏈接時、執(zhí)行時等的語言執(zhí)行器。目前官方的LLVM只支持處理C/C++,Obje

    2024年02月06日
    瀏覽(25)
  • 深度學(xué)習(xí)AI編譯器-TVM簡介

    深度學(xué)習(xí)AI編譯器-TVM簡介

    深度學(xué)習(xí)編譯器主要為解決不同框架下訓(xùn)練的模型 部署到指定的某些設(shè)備上時所遇到的一系列復(fù)雜的問題,即將各種深度學(xué)習(xí)訓(xùn)練框架的模型 部署到各種硬件所面臨的問題; 首先深度學(xué)習(xí)領(lǐng)域,從訓(xùn)練框架看,當(dāng)前可選的框架有pytorch、TensorFlow、Mxnet、paddle,oneflow、caffe/c

    2024年02月11日
    瀏覽(28)
  • [linux]Ubuntu 18.04安裝arm-linux-gcc交叉編譯器的兩種方法

    [linux]Ubuntu 18.04安裝arm-linux-gcc交叉編譯器的兩種方法

    第一種:apt安裝法: Ctrl+Alt+T彈出終端,使用如下命令進(jìn)行arm-linux-gcc的安裝: ??使用如下命令進(jìn)行arm-linux-g++的安裝: ??如果要卸載時使用如下命令進(jìn)行移除,arm-linux-gcc的卸載: ??arm-linux-g++的卸載: ?第二種源碼安裝: 目前網(wǎng)上搜索發(fā)現(xiàn),最多人安裝的是4.4.3版本的

    2024年02月05日
    瀏覽(24)
  • MSVC編譯器介紹

    MSVC編譯器介紹

    與Linux系列操作系統(tǒng)不同,Windows原生環(huán)境不提供類似 gcc , Clang 的C/C++語言 源程序編譯運行工具鏈 。運行在Windows上的IDE(集成開發(fā)環(huán)境),比如CodeBlocks之類,一般都使用 MinGW ( Minimalist GNU for Windows ) 配置模擬Linux下的開發(fā)環(huán)境來進(jìn)行Windows下的開發(fā)。 但是 在Windows下,與開

    2024年02月02日
    瀏覽(20)
  • 簡單介紹一個編譯器的結(jié)構(gòu)(下)

    《編譯器結(jié)構(gòu)介紹(下)》主要是圍繞編譯器后端知識和技術(shù)展開的一個簡單介紹,編譯器前端技術(shù)的介紹在文章《 編譯器結(jié)構(gòu)介紹(上)》中,如果對編譯器整個技術(shù)棧不了解的話,先閱讀上,再閱讀下這篇文章,會更容易理解。 經(jīng)過中間代碼生成過程產(chǎn)生的中間代碼是

    2024年02月09日
    瀏覽(54)
  • ARM 編譯器 Arm Compiler for Embedded 6 相關(guān)工具鏈簡介

    ARM 編譯器 Arm Compiler for Embedded 6 相關(guān)工具鏈簡介

    目錄 1, Introduction to Arm? Compiler 6 1.1 armclang 1.2 armasm 1.3 armlink 1.4 armar 1.5 fromelf 1.6?Arm C++ libraries 1.7?Arm C libraries 1,8?Application development ,ARM程序開發(fā)流程 2,ARM 編譯器 5和ARM 編譯器 6的兼容性 3,ARM編譯器相關(guān)鏈接 Arm Compiler 6 是 Arm 中用于 Arm Cortex? 和 Arm Neoverse? 處理器的最先

    2023年04月12日
    瀏覽(17)
  • 【JavaScript】JavaScript 簡介 ④ ( 解釋型語言 和 編譯型語言 | 計算機程序本質(zhì) | 編譯器 和 解釋器 )

    【JavaScript】JavaScript 簡介 ④ ( 解釋型語言 和 編譯型語言 | 計算機程序本質(zhì) | 編譯器 和 解釋器 )

    計算機 的 程序 是在 CPU 上執(zhí)行的 , CPU 上執(zhí)行的只有匹配該 CPU 的機器碼指令 , 不同類型的 CPU 執(zhí)行的 機器碼指令 格式不同 , X86 和 ARM 執(zhí)行的 機器碼 指令格式是不同的 ; 機器碼指令 是 二進(jìn)制的 , 所有在 計算機 上執(zhí)行的程序 , 都是 若干 二進(jìn)制機器碼 的集合 ; 計算機 只能執(zhí)

    2024年03月22日
    瀏覽(32)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包