第二十三讲 ARM-GCC 与交叉编译

第二十三讲 ARM-GCC 与交叉编译

一、 交叉编译

前面讲到的 hello 例子,在 Ubuntu 下进行编译,编译完成之后的可执行文件在 Ubuntu 环境下运行,这个叫做本地编译。即在当前平台编译,编译得到的程序也在本地执行。嵌入式系统中的编译过程与本地编译却有不同。在一种平台上编译,并能够运行在另一种体系架构不同的平台上,这种称为交叉编译。

在 x86 处理器平台上编译能够运行在 ARM 架构的处理器平台上的程序。这里面需要的工具称为交叉编译工具,他又多个程序连接构成,也称之为交叉编译工具链。

二、ARM-GCC

由于嵌入式设备的资源比较紧张,很多的嵌入式设备并不能将编译工具安装在设备上,需要通过在 x86 平台下编译得到可执行程序后,再挪到 ARM 平台上运行。

要在 x86 平台上编译出 ARM 平台上运行的程序,必须使用交叉编译工具。

ARM-GCC 是针对 ARM 平台的一款编译器,是 GCC 编译工具链的一个分支。

三、 安装 ARM-GCC

  • 在 Ubuntu 安装 arm-gcc

    命令:sudo apt install gcc-arm-linux-gnueabihf

  • 在 ARM 上安装 arm-gcc

    板子资源足够,可以用命令 sudo apt install gcc

  • 用已经制作好的交叉编译工具

    Linaro公司官网

    工具地址

四、使用交叉编译工具链在 Ubuntu 上编译 arm 程序

  • 创建文件 hello.c

    命令:touch hello.c

  • 在 hello.c 在插入代码

    #include <stdio.h>
    int main(int argc, char **argv)
    {
        printf("Hello world!\r\n");
        return 0;
    }
    
  • 保存退出

  • 使用交叉编译工具编译代码

    命令:rm-linux-gnueabihf-gcc hello_world.c -o hello

  • 将编译好的文件放置到共享文件夹

    命令:mv hello 共享文件路径

    如果这里报权限错误,请在前面加上 sudo

  • 切换到开发板

  • 登陆然后连接 nfs 服务器

    命令:sudo mount -t nfs ubuntu ip:共享文件绝对路径 挂载的目录

    例如:sudo mount -t nfs 192.168.3.19:/home/dragon/nfstest /mnt

  • 进入 /mnt 目录

    命令:cd /mnt

    这里目录改为自己挂载的目录

  • 运行可执行文件

    ./hello

  • 输出结果

    Hello world!

  • 成功!

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值