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

    浏览量

    28836
  • 交叉编译
    +关注

    关注

    0

    文章

    31

    浏览量

    12560
  • 应用程序
    +关注

    关注

    37

    文章

    3136

    浏览量

    56395
  • OpenWrt
    +关注

    关注

    10

    文章

    117

    浏览量

    38876
收藏 人收藏

    评论

    相关推荐

    Openwrt开发指南 第25章 配置OpenWrt支持网络摄像头

    Openwrt开发指南 第25章 配置OpenWrt支持网络摄像头
    的头像 发表于 07-13 08:56 1590次阅读
    <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 4524次阅读
    <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 3964次阅读
    <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 3533次阅读
    <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 2129次阅读
    <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 3154次阅读
    <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 1374次阅读
    <b class='flag-5'>Openwrt</b><b class='flag-5'>开发指南</b> 第24章 配置<b class='flag-5'>开发</b>板支持U盘

    AVR单片机应用开发指南及实例

    图书简介及目录:《AVR单片机应用开发指南及实例精解》结构清晰,由浅入深,通俗易懂,结合ATmega128单片机阐述AVR单片机的理论和工程应用。《AVR单片机应用开发指南及实例精解》共分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

    直接数字综合器(DDS)编译开发指南

    直接数字综合器(DDS)编译开发指南:Direct digital synthesizers (DDS), or numerically controlled oscillators (NCO
    发表于 12-31 15:18 22次下载

    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>