嵌入式学习之Linux入门篇笔记——13,Linux第一个程序HelloWorld

配套视频学习链接:http://【【北京迅为】嵌入式学习之Linux入门篇】 https://www.bilibili.com/video/BV1M7411m7wT/?p=4&share_source=copy_web&vd_source=a0ef2c4953d33a9260910aaea45eaec8
 

1.什么是 gcc?

gcc 全称(gun compiler collection)既编译套件,gcc 可以支持多种计算机体系结

构,比如 X86,MIPI,ARM。Ubuntu 默认自带 gcc

可以使用 gcc -v 命令来查看 Ubuntu 的 gcc

2.gcc 基本用法

gcc 选项 文件名

举例:gcc hello.c -o hello

-o 参数为指定生成文件的名字

输入./hello 运行 hello 文件,./的意思为在当前目录找我们的 hello 文件并执行。

如果我们不使用-o 参数指定我们生成文件的名称,直接输入 gcc hello.c 编译完会得

到一个 a.out 文件,执行这个 a.out 的结构和执行 hello 是一样的。

file 命令:

功能:查看文件类型

格式:file 文件名

使用 gcc 编译器编译出来的可执行文件是 X86 的,不能再 arm 开发板上运行。可以使

用 file 命令来查看文件类型。

3.了解编译细节

初学阶段只需要了解这个流程,不用过多的研究

从 hello.c 编译得到 hello 或者 a.out 要经历四个步骤预处理,编译,汇编,链接

hello.i  预处理得到的 C 语言代码

hello.s  汇编语言文件

Hello.o  目标文件。

第一个阶段:预处理阶段,编译器会对头文件或者宏定义进行展开,或者条件编译的选择

我们可以使用-E 参数得到预处理文件

-E:只对文件行预处理,不编译和链接

使用 gcc -E hello.c -o hello.i 得到预处理后的文件

第二阶段,编译,把文件编译成汇编代码

-S 参数 将 hello.i 文件编译成 hello.s 文件

第三阶段,汇编,把汇编文件编译机器码

-c 参数 可以把 hello.s 文件编译成 hello.o 文件

第四阶段,链接

直接把目标文件编译成可以执行的文件

链接分为静态链接动态链接gcc 默认的是动态链接

动态链接特点:生成的程序下,但是需要依赖库

静态链接:使用-static 参数就是静态链接,因为程序里面包含了需要的库,所以体积比

较大。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/674273.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

目标检测 | 卷积神经网络(CNN)详细介绍及其原理详解

前言:Hello大家好,我是小哥谈。卷积神经网络(Convolutional Neural Network,CNN)是一种深度学习模型,主要用于图像识别和计算机视觉任务。它的设计灵感来自于生物学中视觉皮层的工作原理。CNN的核心思想是通…

【人工智能】横扫市场的巨星大模型:探秘当今最热门的AI力量

今年,ChatGPT成了大家的明星,简直是个神奇的助手!问什么问题,都秒回,写各种文字、甚至代码,简直是工作利器。而国内这半年AI领域热度不减,涌现了一批新公司和产品,大厂也在风头上。A…

FPGA高端项目:解码索尼IMX327 MIPI相机转USB3.0 UVC 输出,提供FPGA开发板+2套工程源码+技术支持

目录 1、前言免责声明 2、相关方案推荐我这里已有的 MIPI 编解码方案 3、本 MIPI CSI-RX IP 介绍4、个人 FPGA高端图像处理开发板简介5、详细设计方案设计原理框图IMX327 及其配置MIPI CSI RX图像 ISP 处理图像缓存UVC 时序USB3.0输出架构FPGA逻辑设计工程源码架构SDK软件工程源…

从Unity到Three.js(安装启动)

发现在3D数字孪生或模拟仿真方向,越来越多的公司倾向使用Web端程序,目前一直都是使用的Unity进行的Web程序开发,但是存在不少问题,比如内存释放、shader差异化、UI控件不支持复制或输入中文等。虽然大多数问题都可以找到解决方案&…

通过nginx学习linux进程名的修改

目录 1. 缘起2. 背景知识3. 源码分析3.1 准备工作3.2 设置进程名字 1. 缘起 在运行nginx的时候,用ps查看nginx的进程信息,可能的输出如下: root 42169 3105 0 16:51 ? 00:00:00 nginx: master process ./objs/nginx root …

STM32/C51开发环境搭建(KeilV5安装)

Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、链接器、库管理和一个功能强大的仿真调试器等…

【SpringBoot】策略和模板模式的思考与实践

一、应用场景 之所以会将策略和模板模式放在一起,是因为这两种模式用的最多最广泛,而且基本都是联合使用的。在开始之前,先复习一下模式的定义: 模板模式(Template Pattern) 模板模式是在一个抽象类中定…

python+flask人口普查数据的应用研究及实现django

作为一款人口普查数据的应用研究及实现,面向的是大多数学者,软件的界面设计简洁清晰,用户可轻松掌握使用技巧。在调查之后,获得用户以下需求: (1)用户注册登录后,可进入系统解锁更多…

C#,栅栏油漆算法(Painting Fence Algorithm)的源代码

1 刷油漆问题 给定一个有n根柱子和k种颜色的围栏,找出油漆围栏的方法,使最多两个相邻的柱子具有相同的颜色。因为答案可以是大的,所以返回10^97的模。 计算结果: 2 栅栏油漆算法的源程序 using System; namespace Legalsoft.Tr…

Jetpack Compose之进度条介绍(ProgressIndicator)

JetPack Compose系列(12)—进度条介绍 Compose自带进度条控件有两个,分别是:CircularProgressIndicator(圆形进度条)和LinearProgressIndicator(线性进度条)。 CircularProgressIn…

Codeforces Round 923 (Div. 3)D. Find the Different Ones! 双指针

Problem - D - Codeforces 双指针O(2n),其实本场B题我写的是O(26n),结果这道题不敢想哈哈。 题意就是给你一串数字,然后问区间(l , r)内是否有不同的数字,输出任意一组下标即可,没有就输出 -1 -1 所以我们看l 在 l1~…

【51单片机】实现一个动静态数码管显示项目(超全详解&代码&图示)(5)

前言 大家好吖,欢迎来到 YY 滴单片机 系列 ,热烈欢迎! 本章主要内容面向接触过单片机的老铁 主要内容含: 欢迎订阅 YY滴C专栏!更多干货持续更新!以下是传送门! YY的《C》专栏YY的《C11》专栏YY…

Redis篇之集群

一、主从复制 1.实现主从作用 单节点Redis的并发能力是有上限的,要进一步提高Redis的并发能力,就需要搭建主从集群,实现读写分离。主节点用来写的操作,从节点用来读操作,并且主节点发生写操作后,会把数据同…

Web后端开发:登录认证案例

登录功能 需求分析 在登录界面中,输入用户的用户名以及密码,然后点击 “登录” ,服务端判断用户输入的用户名和密码是否都正确。如果正确,则返回成功结果,前端跳转至系统首页面;否则报错,停留在…

从零开始手写mmo游戏从框架到爆炸(十)— 集成springboot-jpa与用户表

导航:从零开始手写mmo游戏从框架到爆炸(零)—— 导航-CSDN博客 集成springboot-jpa,不用mybatis框架一个是方便对接不同的数据源。第二个目前规划的游戏内容可能对数据库的依赖不是很大,jpa应该肯定能满足要求了…

Unity类银河恶魔城学习记录4-1,4-2 Attack Logic,Collider‘s collision excepetion源代码 P54 p55

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释,可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili Entity.cs using System.Collections; using System.Collections.Generic; u…

深入探索 Express.js 的高级特性

引言 Express.js 是一个基于 Node.js 平台的 Web 开发框架,旨在提供一种简单、易于使用的方式来创建 Web 应用程序。由于其灵活性和可扩展性,它已经成为了 Node.js 社区最受欢迎的框架之一。在本文中,我们将重点介绍 Express.js 的高级特性&…

Flink从入门到实践(一):Flink入门、Flink部署

文章目录 系列文章索引一、快速上手1、导包2、求词频demo(1)要读取的数据(2)demo1:批处理(离线处理)(3)demo2 - lambda优化:批处理(离线处理&…

【Python基础】案例分析:电影分析

电影分析 项目背景: 数据集介绍:movie_lens数据集是一个电影信息,电影评分的数据集,可以用来做推荐系统的数据集需求:对电影发展,类型,评分等做统计分析。目标:巩固pandas相关知识…

Layui 表格组件 头部工具栏 筛选列 加入全选和全不选的功能

Layui 表格组件 头部工具栏 筛选列 加入全选和全不选的功能 问题 前端使用Layui表格组件展示后台数据,因数据中涉及字段较多,因此加入了组件中固有的控制表格列隐藏显示的功能。奈何客户希望再此基础上,加入“全选”和“全不选”的功能&…