谷动谷力

 找回密码
 立即注册
查看: 2341|回复: 1
打印 上一主题 下一主题
收起左侧

arm-linux-gcc 交叉编译工具初次使用

[复制链接]
跳转到指定楼层
楼主
发表于 2021-8-7 22:36:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 sunsili 于 2022-1-13 00:13 编辑

看看这段代码运行效果吧
用vim写代码 shuixianshu.c文件

  1. vim shuixianshu.c
复制代码
按i键编辑代码:
  1. #include <stdio.h>

  2.   void main(void)
  3.   {
  4.        int hun, ten, ind, n;
  5.   
  6.        printf("Shuixianhuashu result is:");
  7.        for(n=100; n<1000; n++)
  8.     {
  9.          hun = n/100;
  10.          ten = (n%100)/10;        
  11.          ind = n%10;

  12.          if(n == hun*hun*hun + ten*ten*ten + ind*ind*ind)
  13.          {
  14.             printf("%d ", n);
  15.          }
  16.      }
  17.      printf("\n\r");
  18. }
复制代码
这是水仙花数代码, 水仙花数:等于各位数立方之和。详解请参考http://bbs.sunsili.com/thread-225327-1-1.html

写保存退出 按键ESC  写命令:wq
  1. gcc -o shuixianshu.o shuixianshu.c
  2. ./shuixianshu.o
  3. Shuixianhuashu result is:153 370 371 407
  4. arm-linux-gnueabi-gcc -o shuixianshu.arm shuixianshu.c
  5. ./shuixianshu.arm
  6. -bash: ./shuixianshu.arm: cannot execute binary file: Exec format error
复制代码

(无法运行, 因为我们的电脑是X86框架的,用arm-linux-gnueabi-gcc 编译出来的程序是不在X86平台运行的, 只能要ARM平台下运行, 要下载到开发板上运行, 用用arm-linux-gnueabi-gcc 在ARM开发板运行也为报错,我们后面会说)

怎么把编译好的程序放到开发板呢
1、启动开发板,我这里使用的RK3399开发板
2、连接网络,要与我们的开发电脑linux(一般是虚拟机) 我用的是win10 -wsl(不知道wsl的,请查看超简单!这样在Windows下安装Linux系统,操作更方便-电子技术单片机开发编程WEB开发IT运维-谷动谷力(sunsili.com))在同一局域网
3、查看网络配置:
ifconfig
获得开发板ip
4、开发电脑 输入命令:
sftp 应用名@开发板IP
例我的开发板用户名root IP 192.168.10.76
  1. sftp root@192.168.10.76 (如果用户权限不够,就用sudo sftp root@192.168.10.76)
复制代码

按提示输入密码
提示选项时输入yes
连接成功是这样的:
  1. sftp>
复制代码

5、这样可以输入sftp命令了(查看sftp命令详解http://bbs.sunsili.com/thread-225314-1-1.html):
向开发板传文件:
  1. put shuixianshu.arm
复制代码

6、按提示传入得到开发板路径,一般在当前用户下主目录,我们这里用的root登录的,那么传入开发板的路径就是/home/root
7、在开发板里运行:
/home/root目录:
  1. cd ~
复制代码

查看是否有 shuixianshu.arm
  1. ls
复制代码

查看到是有shuixianshu.arm
运行:
  1. ./shuixianshu.arm
复制代码


提示:
  1. shuixianshu.arm no such file
复制代码


提示没找这个文件,这里与开发电脑不一样,问题还是不能执行,为什么呢?ARM架构不一样,我们用的RK3399是要arm-linux-gnueabinf-gcc:
  1. arm-linux-gnueabinf-gcc -o shuixianshu.o shuixianshu.c
复制代码

再重复上过操作, 在开发板运行:
  1. ./shuixianshu.o
复制代码

终于看到与我PC运行一样效果了
  1. Shuixianhuashu result is:153 370 371 407
复制代码

还有一种方法:
传源码到开发板, 用开发板里gcc, 开发里安装的gcc, 就是arm-linux-gnueabinf-gcc,在开发板编译就是交叉编译了,我们很少这样用,编译有误,在开板里,只能用vi/vim不方便修改代码。
重复上述传shuixianshu.c到开发板,然后编译运行:
  1. gcc -o shuixianshu.o shuixianshu.c
  2. ./shuixianshu.o
  3. Shuixianhuashu result is:153 370 371 407
复制代码

使用与PC一样了,其实开发板就是一台linux电脑。
回复

使用道具 举报

沙发
 楼主| 发表于 2021-8-7 22:50:41 | 只看该作者
本帖最后由 sunsili 于 2021-8-7 23:45 编辑

注意事项

1、在win10 的linux 子系统下,必须将源码放置在 ~ 主目录下面自己创建一个toolchain目录下,放在e盘或者d盘其他盘,会导致找不到头文件(之前编译homanyOS一直编译不过,也是找不头文件。猜测,微软linux子系统和windows 本身的文件系统兼容性做的不好)
2、编译的时候按照我的步骤加快编译和避开编译其他错误
3、代码里不要有中文字路径(目录、文件名)

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|深圳市光明谷科技有限公司|光明谷商城|Sunshine Silicon Corpporation ( 粤ICP备14060730号|Sitemap

GMT+8, 2024-4-26 09:40 , Processed in 0.091749 second(s), 38 queries .

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表