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

【嵌入式】Linux開發(fā)工具arm-linux-gcc安裝及使用

這篇具有很好參考價值的文章主要介紹了【嵌入式】Linux開發(fā)工具arm-linux-gcc安裝及使用。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

知識架構及層次 — 程序編譯及調(diào)試

arm-linux-gcc,linux,arm開發(fā),運維,Linux內(nèi)核,嵌入式

嵌入式交叉編譯器安裝配置

arm-linux-gcc,linux,arm開發(fā),運維,Linux內(nèi)核,嵌入式

  • 宿主機

執(zhí)行編譯、鏈接嵌入式軟件的計算機

  • 目標機

運行嵌入式軟件的硬件平臺

  • “本地”編譯器

用來生成在與編譯器本身所在的計算機和操作系統(tǒng)(平臺)相同的環(huán)境下運行的目標代碼,例如 Windows 環(huán)境生成 Windows 目標代碼。

  • 交叉編譯器

用來生成在其它平臺上運行的目標代碼,例如 Windows

ARM微處理器/Linux系統(tǒng)下編譯器

編譯器命名規(guī)則

  • arch [-vendor] [-os] [-(gnu)eabi]-工具名稱
  • arch – 體系架構,如 ARM,MIPS
  • vendor – 工具鏈提供商,CPU名稱或者開發(fā)板廠商
  • os – 目標操作系統(tǒng),如 linux
  • (gnu) eabi – 使用的庫,包括 glibc、eabi、uclibc 三種

例: arm-none-eabi-gcc

用于編譯 ARM 架構的裸機系統(tǒng)

例:arm-none-linux-gnueabi-gcc

用于基于 ARM 架構的 Linux 系統(tǒng),基于GCC,使用 Glibc 庫

經(jīng)過Codesourcery 公司優(yōu)化過推出的編譯器,用于編譯 ARM 架構的 u-boot、Linux內(nèi)核、linux應用等。

幾個重要目錄:
編譯器工具所在目錄:FriendlyARM/toolchain/4.9.3/bin

arm-linux-gcc,linux,arm開發(fā),運維,Linux內(nèi)核,嵌入式

編譯器頭文件所在目錄:FriendlyARM/toolchain/4.9.3/arm-cortexa9-linux-gnueabihf/sys-root/usr/include

庫文件所在目錄:FriendlyARM/toolchain/4.9.3/arm-cortexa9-linux-gnueabihf/sys-root/usr/lib

編譯器下載及安裝

可以去官網(wǎng)下載,http://www.linaro.org/downloads/

但是速度比較慢,可以直接用我下載好的。

鏈接:?https://pan.baidu.com/s/1jL_G6kbTC9h_bF8HHXBWxw?提取碼: 67u4

1.先把下載好的安裝包移動到根目錄下的tmp目錄中(/tmp)

2.使用tar命令解壓安裝包,即在Terminal中輸入以下命令:(前面的sudo表示使用root權限執(zhí)行該命令)

sudo tar -xjvf /tmp/arm-linux-gcc-4.6.4-arm-x86_64.tar.bz2 -C /

注意是大寫的字母C,此命令會把安裝包解壓到根目錄下的opt的TuxamitoSoftToolchains里面(/opt/TuxamitoSoftToolchains)

3.解壓完成后,再在(/usr/local)中創(chuàng)建一個新目錄arm,即在Terminal中輸入以下命令:

sudo mkdir /usr/local/arm

創(chuàng)建arm目錄成功后,還需要給它解放全部權限,即在Terminal中輸入以下命令:

sudo chmod 777 /usr/local/arm

4.在解壓出來的目錄中找到并把整個gcc-4.6.4目錄復制到剛剛建好的arm目錄中,命令如下:

先cd切換到gcc-4.6.4所在目錄(切換后先ls看一下有沒有gcc-4.6.4目錄):

cd /opt/TuxamitoSoftToolchains/arm-arm1176jzfssf-linux-gnueabi/

在執(zhí)行 cp 復制命令,-r 表示整個目錄以及里面的任何東西

sudo cp -r gcc-4.6.4 /usr/local/arm

5.打開(/etc/profile)配置環(huán)境變量和庫變量,目的是以后可以在任何位置使用該交叉編譯器,命令如下:

sudo vi /etc/profile

用vi或者vim打開后,在文件最后添加兩行,并輸入以下代碼:第一行是添加執(zhí)行程序的環(huán)境變量,第二行是庫文件的路徑

export PATH=$PATH:/usr/local/arm/gcc-4.6.4/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/arm/gcc-4.6.4/lib

然后保存退出即可。

arm-linux-gcc,linux,arm開發(fā),運維,Linux內(nèi)核,嵌入式

6.使用source命令重新加載生效該配置文件

source /etc/profile
1

7.檢驗是否安裝成功,在 Terminal 輸入以下命令輸出版本信息:

arm-linux-gcc -v

arm-linux-gcc,linux,arm開發(fā),運維,Linux內(nèi)核,嵌入式

arm-linux-gcc工具使用

arm-linux-gcc語法形式:arm-linux-gcc [ option | filename ]...

通常情況下,產(chǎn)生一個新的程序需要經(jīng)過四個階段:預處理、編譯、匯編,鏈接

當然我們可以通過參數(shù)決定該編譯操作執(zhí)行到何步結束

參數(shù)繁多,在Linux環(huán)境下尋求幫助:man arm-linux -gcc

-E

  • 只對文件進行預處理,但不進行編譯、匯編和鏈接。

例:arm-linux -gcc -E hello.c -o hello1.c

arm-linux-gcc,linux,arm開發(fā),運維,Linux內(nèi)核,嵌入式

預處理后,hello1.c 中的內(nèi)容:

arm-linux-gcc,linux,arm開發(fā),運維,Linux內(nèi)核,嵌入式

-S

  • 只對文件進行編譯(產(chǎn)生匯編文件.s),但是并不進行匯編和鏈接。

例: arm-linux -gcc -S hello.c
上例中就會產(chǎn)生一個匯編文件 hello.s

arm-linux-gcc,linux,arm開發(fā),運維,Linux內(nèi)核,嵌入式

-c

只對文件進行編譯和匯編,但是并不進行鏈接,也就是說只把程序做成 obj 文件。

例: arm-linux -gcc -c hello.c –o hello.o

-o

指定目標名稱,缺省的時候,gcc 編譯出來的文件是 a.out

例:

arm-linux -gcc hello.c 默認編譯出 hello.out

arm-linux -gcc -o hello.bin hello.c 指定目標名詞是 hello.bin

arm-linux -gcc -o hello.s -S hello.c

-include file

包含某個代碼,簡單來說,就是編譯某個文件時需要另一個文件的時候,就可以用它設定,功能就相當于在代碼中使用#include。

例:arm-linux -gcc hello.c -include type.h

-I dir

如果使用#include"file"的時候,gcc/g++ 會先在當前目錄查找你所指定的頭文件,如果沒有找到,編譯器會到缺省的頭文件目錄找;

如果使用-I指定了目錄, 編譯器會先到你所指定的目錄查找,然后再按常規(guī)的順序去找。

例: arm-linux -gcc -o hello -I/xxx/include hello.c

-I

就是取消前一個參數(shù)的功能,所以一般在-I dir之后使用

arm-linux-gcc,linux,arm開發(fā),運維,Linux內(nèi)核,嵌入式

-iprefix prefix 和 -iwithprefix dir

這兩個參數(shù)一般一起使用,當-I的目錄查找失敗,會到prefix+dir下查找

-l庫名

指定編譯的時候使用的庫(靜態(tài)庫.a / 動態(tài)庫.so)

例:arm-linux-gcc -lpthread hello.c

指定用到了 phtread.c 庫

-L目錄

指定編譯的時候,搜索庫的路徑。比如自己的庫,就可以用-L指定到你的庫所在的目錄,不然編譯器將只在標準庫的目錄找。這個dir就是目錄的名稱。

例:arm-linux-gcc –L./ hello.c –o hello

arm-linux-gcc,linux,arm開發(fā),運維,Linux內(nèi)核,嵌入式

gcc 優(yōu)化

gcc 提供了為了滿足用戶不同程度的的優(yōu)化需要,提供了近百種優(yōu)化選項,用來對 {編譯時間,目標文件長度,執(zhí)行效率} 這個三維模型進行不同的取舍和平衡。優(yōu)化的方法不一而足,總體上將有以下幾類:

精簡操作指令;

盡量滿足cpu的流水操作;

通過對程序行為的猜測,重新調(diào)整代碼的執(zhí)行順序;

充分使用寄存器;

對簡單的調(diào)用進行展開等

-O0,-O1,-O2,-O3

O0:不做任何優(yōu)化,這是默認的編譯選項

O3:優(yōu)化級別最高

-g

  • 編譯器在編譯的時候產(chǎn)生調(diào)試信息。

例:arm-linux –gcc –o hello -g hello.c

arm-linux-gcc,linux,arm開發(fā),運維,Linux內(nèi)核,嵌入式

課后作業(yè)

(1) 看門狗部件屬于(硬件模塊),其核心功能為(偵測軟件代碼跑飛)和(當系統(tǒng)“跑飛”而進入死循環(huán)時,恢復系統(tǒng)的運行)。

(2) 假設C程序代碼 fun.c,將其編譯成目標代碼 fun.o,編譯命令為arm-linux-gcc -c fun.c -o fun.o;如果 fun.c 使用了庫函數(shù) libcurses.a,將其和 main.c 一起編譯成可執(zhí)行文件 smartfun,則編譯命令為arm-linux-gcc -c fun.c main.c -lcurses -o smartfun。文章來源地址http://www.zghlxwxcb.cn/news/detail-795904.html

到了這里,關于【嵌入式】Linux開發(fā)工具arm-linux-gcc安裝及使用的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領支付寶紅包贊助服務器費用

相關文章

  • 使用GUI Guider工具開發(fā)嵌入式GUI應用(4)-使用image組件

    使用GUI Guider工具開發(fā)嵌入式GUI應用(4)-使用image組件

    在沒有使用LVGL和GUI Guider的時候,我想做一個電子相冊的小應用,需要在MCU工程中集成一個小型的文件系統(tǒng)和圖像解碼組件,例如 fatfs (http://elm-chan.org/fsw/ff/00index_e.html)組件和 tjpgdec (http://elm-chan.org/fsw/tjpgd/00index.html)組件。使用GUI Guider顯示圖片就不需要這么麻煩,可以使

    2024年02月13日
    瀏覽(32)
  • Ubuntu嵌入式開發(fā)編譯工具鏈安裝教程之Arm GNU Toolchain

    Ubuntu嵌入式開發(fā)編譯工具鏈安裝教程之Arm GNU Toolchain

    下載路徑: Downloads | GNU Arm Embedded Toolchain Downloads – Arm Developer 官方提供了可執(zhí)行版本和源文件版本(后綴為*src_tar.bz2?),通常情況我們直接下載可執(zhí)行版本就足夠了,當然致力于編譯工具鏈原理學習的小伙伴對源文件版本是必不可少的,本文僅限可執(zhí)行版本安裝教程,若有

    2024年02月13日
    瀏覽(54)
  • 使用GUI Guider工具在MCU上開發(fā)嵌入式GUI應用 (1) - GUI Guider簡介及安裝

    使用GUI Guider工具在MCU上開發(fā)嵌入式GUI應用 (1) - GUI Guider簡介及安裝

    受限于每篇文章最多只能貼9張圖的限制,這個教程被拆分成了多篇文章連載發(fā)布,完整目錄結構如下圖x所示。后續(xù)會發(fā)布完整教程的pdf文件,敬請期待。 圖x 完整教程文檔的目錄 LVGL是一個開源免費(MIT許可)的嵌入式GUI組件(https://lvgl.io/),支持觸摸屏操作,移植簡單方

    2024年02月13日
    瀏覽(34)
  • 技術之外(02)猿創(chuàng)征文|寶藏工具篇|數(shù)字芯片設計,嵌入式開發(fā),人工智能|沒我可以,沒你不行

    技術之外(02)猿創(chuàng)征文|寶藏工具篇|數(shù)字芯片設計,嵌入式開發(fā),人工智能|沒我可以,沒你不行

    新芯設計:專注,積累,探索,挑戰(zhàn) ??由于工作的繁忙,已經(jīng)有較長的時間沒有發(fā)文了。偶然之間,在回復讀者來信的時候,關注到了 CSDN 創(chuàng)作活動中的「 猿創(chuàng)征文 」 第四季 | 2022 年我的開發(fā)者工具 。這時才晃過神來,2022 年,已經(jīng)跨入了倒數(shù)的一個四分之一,歲月的印

    2024年01月23日
    瀏覽(62)
  • 使用文心一言等智能工具指數(shù)級提升嵌入式/物聯(lián)網(wǎng)(M5Atom/ESP32)和機器人操作系統(tǒng)(ROS1/ROS2)學習研究和開發(fā)效率

    使用文心一言等智能工具指數(shù)級提升嵌入式/物聯(lián)網(wǎng)(M5Atom/ESP32)和機器人操作系統(tǒng)(ROS1/ROS2)學習研究和開發(fā)效率

    以M5AtomS3為例,博客撰寫效率提升10倍以上: 0.?Linux環(huán)境Arduino IDE中配置ATOM S3_zhangrelay的博客-CSDN博客 1.?M5ATOMS3基礎01按鍵_zhangrelay的博客-CSDN博客 2.?M5ATOMS3基礎02傳感器MPU6886_zhangrelay的博客-CSDN博客 3.?M5ATOMS3基礎03給ROS1發(fā)一個問候(rosserial)_zhangrelay的博客-CSDN博客 4.?M5ATOMS3基

    2024年02月14日
    瀏覽(35)
  • 嵌入式Linux:如何進行嵌入式Linux開發(fā)?

    目錄 1、裸機開發(fā) 2、SDK開發(fā) 3、驅(qū)動開發(fā) 3.1、字符設備驅(qū)動 3.2、塊設備驅(qū)動 3.3、網(wǎng)絡設備驅(qū)動 4、應用開發(fā) 嵌入式Linux開發(fā)主要有四種方式:裸機開發(fā)、SDK開發(fā)、驅(qū)動開發(fā)和應用開發(fā)。 裸機開發(fā)通常指在沒有操作系統(tǒng)支持的環(huán)境中直接在硬件上運行程序的開發(fā)。這種開發(fā)方

    2024年01月25日
    瀏覽(31)
  • 關于嵌入式開發(fā)的一些信息匯總:嵌入式C開發(fā)人員、嵌入式系統(tǒng)Linux

    關于嵌入式開發(fā)的一些信息匯總:嵌入式C開發(fā)人員、嵌入式系統(tǒng)Linux

    這篇文章是關于嵌入式開發(fā)的一些基本信息,供想入行的人參考。有一些作者本人的想法,以及來自外網(wǎng)的大拿的文章翻譯而來,原文鏈接在此Learning Linux for embedded systems,再次感謝,支持原創(chuàng)。 普通C開發(fā)人員和嵌入式C開發(fā)人員之間的 基本區(qū)別在于 ,因為嵌入式C程序被設

    2024年02月03日
    瀏覽(129)
  • 嵌入式開發(fā):單片機嵌入式Linux學習路徑

    嵌入式開發(fā):單片機嵌入式Linux學習路徑

    SOC(System on a Chip)的本質(zhì)區(qū)別在于架構和功能。低端SOC如基于Cortex-M架構的芯片,如STM32和NXP LPC1xxx系列,不具備MMU(Memory Management Unit),適用于輕量級實時操作系統(tǒng)如uCOS和FreeRTOS。高端SOC如基于Cortex-A架構的芯片,如三星、高通、飛卡、全志和瑞芯微等,具備MMU,支持虛擬內(nèi)

    2024年02月15日
    瀏覽(38)
  • 掌握嵌入式Linux編程2工具鏈

    掌握嵌入式Linux編程2工具鏈

    工具鏈是嵌入式Linux的第一個元素,也是你項目的起點。你將用它來編譯所有將在你的設備上運行的代碼。你在這個早期階段做出的選擇將對最終結果產(chǎn)生深遠的影響。你的工具鏈應該能夠通過使用處理器的最佳指令集來有效地利用你的硬件。它應該支持你所需要的語言,并

    2024年02月11日
    瀏覽(22)
  • 嵌入式Linux開發(fā)教程匯總

    野火:https://doc.embedfire.com/products/link/zh/latest/linux/index.html 正點原子:http://47.111.11.73/docs/boards/arm-linux/index.html 百問網(wǎng):http://download.100ask.net/books/Linux/ELADCM1/index.html 百問網(wǎng):https://space.bilibili.com/275908810/channel/seriesdetail?sid=1714177 野火:https://space.bilibili.com/356820657/channel/seriesdeta

    2024年02月10日
    瀏覽(97)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領取紅包

二維碼2

領紅包