<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Openwrt開發指南 第26章 編寫應用程序交叉編譯

嵌入式大雜燴 ? 來源:嵌入式大雜燴 ? 作者:嵌入式大雜燴 ? 2023-07-15 16:06 ? 次閱讀

1 交叉編譯環境簡介

首先說一下什么是交叉編譯:我們在 ubuntu 中寫了一個程序,比如 main.c,然后使用 ubuntu 的編譯器進行編譯,生成的可執行文件自然可以在 ubuntu 中運行。但是生成的可執行文件可以在我們的開發板中能運行嗎?答案當然是否定的,原因很簡單,就是平臺不同,芯片架構不同。那我們如何使得 ubuntu 編譯出來的可執行文件在開發板上面運行呢,當然就要借助一些工具了,通過一些工具進行對程序編譯,生成在開發板上可以運行的文件,那這些工具我們把它叫做交叉編譯工具,把這種從一個平臺開發另一個平臺應用的方式稱為交叉編譯。

Toolchain 即交叉編譯工具,要在 ubuntu 編譯我們寫的應用程序使得生成開發板可以執行的文件,必須有這一套工具才可以進行!

2 交叉工具的配置

首先,我們查看是否已經有交叉編譯工具:

1.png

顯然沒有Toolchain!

注意:在本節教程的附件里編者已經給出了交叉編譯工具。

好的,配置OpenWrt 使得支持toolchain。在openwrt/目錄下運行 make menuconfig,并且選中 toolchain:

2.png

保存之后,編譯 OpenWrt:

$make V=99

編譯完成之后,我們可以查看是否有交叉編譯工具包的存在。

3.png

OK,解壓交叉編譯工具包:解壓完成后,然后我們cd 到解壓完成后的工具包中,再進入該工具包中的另一個目錄,找到 bin 文件夾,同樣cd 進去 bin 文件夾。

好了,現在我們就擁有交叉編譯工具了,我們要把交叉編譯工具的路徑保存在一個環境變量中,這樣做是為了,我們編譯程序時會根據這個環境變量找到交叉編譯工具的位置。以 root 的權限編輯如下文件:

#vi /etc/environment

注意:也可用sudo vi /etc/environment。

編輯前該文件的內容如下(我的ubuntu):

4.png

好的,增加我們交叉編譯工具路徑后(注意以冒號分隔)。為了讓這個環境變量起作用,我們重啟 ubuntu!

【注意】還可如下配置。

  1. 拷貝OpenWrt-Toolchain-ramips-rt305x_gcc-4.8-linaro_uClibc-0.9.33.2.Linux-i686.tar.bz2到虛擬機中的/opt/目錄下
  2. 解壓OpenWrt-Toolchain-ramips-rt305x_gcc-4.8-linaro_uClibc-0.9.33.2.Linux-i686.tar.bz2, 用命令

sudo tar -xvf OpenWrt-Toolchain-ramips-rt305x_gcc-4.8-linaro_uClibc-0.9.33.2.Linux-i686.tar.bz2 //必須用超級用戶模式

  1. 編輯~/.bashrc文件, vi ~/.bashrc

在文件最后增加一行

export PATH=$PATH: /opt/OpenWrt-Toolchain-ramips-rt305x_gcc-4.8-linaro_uClibc-0.9.33.2.Linux-i686/toolchain-mipsel_24kec+dsp_gcc-4.8-linaro_uClibc-0.9.33.2/bin

保存退出

  1. 運行 source ~/.bashrc 讓文件生效
  2. 測試

方法一:

在命令行下輸入 mipsel-o 然后按tab鍵看會不會自動補全

方法二:

輸入:mipsel-openwrt-linux- -v

5.png

3 測試交叉編譯環境

重啟完成后,我們編寫一個非常簡單的應用程序:

#include < stdio.h >
int main ()
{
    printf(“hello world!n”);
    return 0;
}

然后使用交叉編譯工具進行編譯!

6.png

編譯完成后生成可執行文件:

7.png

然后我們嘗試在ubuntu中運行可執行文件 main:

8.png

很顯然,這個可執行文件無法在 ubuntu 上運行,但是,卻可以在我們開發板中運行,我們把可執行文件移動到開發板中進行執行:

9.png

注意:main的權限應為777,否則無法運行。

10.png

【注意】交叉編譯工具鏈編譯的時報沒有STAGING_DIR,它在ubuntu上的/home/farsight/chaos_calmer/staging_dir,在ubuntu上鍵入下面命令

export STAGING_DIR=/home/farsight/chaos_calmer/staging_dir

或者放入.bashrc中,

$vi ~/.bashrc

在最后一行添加export STAGING_DIR=/home/farsight/chaos_calmer/staging_dir即可

$ source ~/.bashrc

審核編輯:湯梓紅

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

    關注

    5

    文章

    533

    瀏覽量

    28939
  • 交叉編譯
    +關注

    關注

    0

    文章

    31

    瀏覽量

    12574
  • 應用程序
    +關注

    關注

    37

    文章

    3146

    瀏覽量

    56565
  • OpenWrt
    +關注

    關注

    10

    文章

    118

    瀏覽量

    38935
收藏 人收藏

    評論

    相關推薦

    Openwrt開發指南 第25章 配置OpenWrt支持網絡攝像頭

    Openwrt開發指南 第25章 配置OpenWrt支持網絡攝像頭
    的頭像 發表于 07-13 08:56 ?1621次閱讀
    <b class='flag-5'>Openwrt</b><b class='flag-5'>開發指南</b> 第25章 配置<b class='flag-5'>OpenWrt</b>支持網絡攝像頭

    Openwrt開發指南 第2章 OpenWrt開發環境搭建

    ,并燒寫到設備中;另外,嵌入式設備的資源并不足以用來開發軟件。所以需要用到交叉開發模式:在主機上編輯、編譯軟件,然后在目標板上運行、驗證程序
    的頭像 發表于 06-27 09:09 ?4633次閱讀
    <b class='flag-5'>Openwrt</b><b class='flag-5'>開發指南</b> 第2章 <b class='flag-5'>OpenWrt</b><b class='flag-5'>開發</b>環境搭建

    Openwrt開發指南 第3章 OpenWrt下載及配置

    編譯OpenWrt首先需要下載源碼,OpenWrt的源碼是通過git下載,OpenWrt目前已經很好的支持了MT7620、MT7821等芯片,因此O
    的頭像 發表于 06-27 09:10 ?4043次閱讀
    <b class='flag-5'>Openwrt</b><b class='flag-5'>開發指南</b> 第3章 <b class='flag-5'>OpenWrt</b>下載及配置

    Openwrt開發指南 第4章 燒寫OpenWrt固件

    對于一個完整的嵌入式系統,它由U-boot、內核(Linux)、文件系統、應用程序四部分組成。那么這四部分之間的關系是怎么樣的呢?OpenWrt是屬于哪部分呢?
    的頭像 發表于 06-27 09:11 ?3612次閱讀
    <b class='flag-5'>Openwrt</b><b class='flag-5'>開發指南</b> 第4章 燒寫<b class='flag-5'>OpenWrt</b>固件

    Openwrt開發指南 第20章 驅動開發之LED應用程序

    在前面的章節中, 我們成功的寫出了我們自己的驅動程序, 并且向應用程序提供了 open、ioctl 兩個接口,那么接下來我們就來編寫應用程序,調用這些接口。
    的頭像 發表于 07-03 09:02 ?2189次閱讀
    <b class='flag-5'>Openwrt</b><b class='flag-5'>開發指南</b> 第20章 驅動<b class='flag-5'>開發</b>之LED<b class='flag-5'>應用程序</b>

    Openwrt開發指南 第22章 Openwrt串口的使用2

    在上一章中,我們成功的讓驅動程序支持了串口 2,并且做了簡單的測試。接下來,我們就為串口 2 添加一個應用程序,從而實現 Wi-Fi 串口。實現過程非常簡單,首先進入 OpenWrt 系統源碼,然后運行 make menucon
    的頭像 發表于 07-05 09:09 ?3219次閱讀
    <b class='flag-5'>Openwrt</b><b class='flag-5'>開發指南</b> 第22章 <b class='flag-5'>Openwrt</b>串口的使用2

    Openwrt開發指南 第24章 配置開發板支持U盤

    Openwrt開發指南 第24章 配置開發板支持U盤
    的頭像 發表于 07-13 08:55 ?1447次閱讀
    <b class='flag-5'>Openwrt</b><b class='flag-5'>開發指南</b> 第24章 配置<b class='flag-5'>開發</b>板支持U盤

    CPLD/FPGA高級應用開發指南 光盤

    `CPLD/FPGA高級應用開發指南1可編程邏輯器件與EDA技術2Xilinx CPLD系列產品第3
    發表于 06-02 10:13

    AVR單片機應用開發指南及實例

    圖書簡介及目錄:《AVR單片機應用開發指南及實例精解》結構清晰,由淺入深,通俗易懂,結合ATmega128單片機闡述AVR單片機的理論和工程應用?!禔VR單片機應用開發指南及實例精解》共分9,主要
    發表于 07-28 10:28

    Labview開發技術叢書--大型應用程序與多人開發指南

    Labview開發技術叢書--大型應用程序與多人開發指南
    發表于 09-02 18:07

    RealView編譯工具開發指南

    RealView編譯工具開發指南
    發表于 03-28 12:06

    RealView編譯工具開發指南

    RealView編譯工具開發指南
    發表于 05-09 09:59

    Mali GPU OpenGL ES應用程序開發指南

    這是適用于馬里GPU的OpenGL ES應用程序開發指南。 它提供了使用OpenGL ES 1.1和OpenGL ES 2.0 API為馬里GPU開發應用程序
    發表于 08-30 07:57

    MATLAB Runtime Server 應用程序開發指南

    MATLAB Runtime Server 應用程序開發指南:The MATLAB Runtime Server is a variant of MATLAB®
    發表于 02-21 08:40 ?40次下載

    ST微電子STM8的C交叉編譯用戶指南

    《STM8交叉編譯器用戶指南》是程序員為STM8微控制器環境編寫C程序的參考
    發表于 06-04 08:00 ?12次下載
    ST微電子STM8的C<b class='flag-5'>交叉</b><b class='flag-5'>編譯</b>用戶<b class='flag-5'>指南</b>
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>