谷动谷力

 找回密码
 立即注册

扫一扫,访问微社区

谷动谷力 首页 编程 查看内容

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

2021-8-8 23:56| 发布者: admin| 查看: 1| 评论: 1|原作者: sunsili

摘要: 看看这段代码运行效果吧 用vim写代码 shuixianshu.c文件 vim shuixianshu.c 复制代码按i键编辑代码: #include stdio.h void main(void) { int hun, ten, ind, n; printf(Shuixianhuashu result is:); f ...
看看这段代码运行效果吧
用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. }
复制代码
这是水仙花数代码, 水仙花数:等于各位数立方之和。

写保存退出 按键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 <a href="mailto:root@192.168.10.76">root@192.168.10.76</a> (如果用户权限不够,就用sftp <a href="mailto:root@192.168.10.76">root@192.168.10.76</a> )
复制代码


按提示输入密码
提示选项时输入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电脑。




鲜花

握手

雷人

路过

鸡蛋

相关阅读

发表评论

最新评论

sunsili 2021-8-7 22:50
本帖最后由 sunsili 于 2021-8-7 23:45 编辑

注意事项

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

查看全部评论(1)

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

GMT+8, 2021-8-8 23:56 , Processed in 0.151101 second(s), 28 queries .

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

返回顶部