Linux交叉编译hello程序

举报
yd_274589494 发表于 2023/07/25 11:32:58 2023/07/25
【摘要】 @TOC 前言相信大家对于Hello程序都很熟悉,大家学习C语言第一个开始学习的程序就是Hello world,但是我今天要讲的是在嵌入式Linux程序下的hello程序。 一、嵌入式Linux下的hello程序代码:#include <stdio.h> /* 执行命令: ./hello world * argc = 2 * argv[0] = ./hello * argv[1] = ...

@TOC


前言

相信大家对于Hello程序都很熟悉,大家学习C语言第一个开始学习的程序就是Hello world,但是我今天要讲的是在嵌入式Linux程序下的hello程序。

一、嵌入式Linux下的hello程序

代码:

#include <stdio.h>

 /* 执行命令: ./hello world
  * argc = 2
  * argv[0] = ./hello
  * argv[1] = world
  */

 int main(int argc, char **argv)
 {
      if (argc >= 2)
              printf("Hello, %s!\n", argv[1]);
      else
              printf("Hello, world!\n");
      return 0;
 }

在C语言里面main函数一般都不带有参数,但是在嵌入式Linux中main函数常带参数,参数的作用具体是什么呢下面讲给大家讲解。

二、main函数参数作用

argc:这个参数代表你执行程序时传递的参数有多少个,比如执行命令: ./hello world。
./hello是一个参数,world又是一个参数。所以此时argc就是2。

argv:这个参数就是一个二级指针,他就指向传递的参数。
argv[0]代表./hello
argv[1]代表world

三、交叉编译hello程序

在Ubantu下编译Hello程序

直接执行gcc命令即可编译程序,使用./hello即执行程序。
在这里插入图片描述

将hello程序挂载到开发板

1.生成可执行文件
在x86和x64编译环境下直接使用gcc命令即可编译程序,但是这些程序无法在板子上运行。
使用file命令查看hello程序文件类型:
在这里插入图片描述
通过file命令我们可以得知直接用gcc命令生成的可执行文件是无法在板子上面运行的。
所以我们需要使用下面的命令:
在这里插入图片描述
file命令查看文件类型:
在这里插入图片描述
通过file命令我们得知此文件类型是ARM类型的可以直接在板子上去运行的。
2.执行cp指令将hello程序挂载到网络文件系统
在这里插入图片描述
3.挂载ubantu
串口下执行mount -t nfs -onolock,vers=3192.168.5.11:/home/book/nfs_rootfs /mnt命令
4.拷贝可执行文件到串口
5.执行代码

总结

大家一直都认为hello程序是一个非常简单的程序,但是在Linux下的hello程序却包含了很多知识点。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。