首页 > 其他分享 >嵌入式学习——C语言概述(编译原理)

嵌入式学习——C语言概述(编译原理)

时间:2024-07-08 22:56:21浏览次数:9  
标签:文件 gcc main 嵌入式 编译 C语言 hello

一、计算机的组成部分

输入设备、内存、cpu(运算器、控制器)、外存储器、输出设备

二、C语言编译的步骤(面试重点)

1、预处理:宏指令的替换(# include <stdio.h>等等)、删除注释、添加行号等。

      例如:

gcc -E hello.c -o hello.i

hello.i文件内容:

       这段代码就是将写好的hello.c文件进行分段编译       将hello.c文件转换成hello.i 。

2、编译:通过gcc编译器把预处理的文件进行语法分析、语义分析,以及优化成对应的汇编代码文件。

      例如:

gcc -S hello.c -o hello.s
或者
gcc -S hello.i -o hello.s

hello.s文件内容:

     把hello.c或者hello.i文件转换成hello.s的预处理好的文件。

3、汇编:通过汇编器把汇编文件转换成中间文件。

      例如:

gcc -C hello.c -o hello.o

gcc -C hello.i -o hello.o

gcc -C hello.s -o hello.o

hello.c文件内容:

4、链接:通过链接器LD,将hello.s文件和库文件进行链接,生成可执行文件。

三、C语言的程序组成

1、main函数是函数的入口,有且只有一个。

2、main函数是程序执行的入口,有且只能有一个。

3、最简单的程序结构:

#include <stdio.h>
int main()
{
    printf("Hello,World!\n");
    return 0;
}

标签:文件,gcc,main,嵌入式,编译,C语言,hello
From: https://blog.csdn.net/weixin_46432503/article/details/140276593

相关文章

  • vscode C/CPP 单文件/多文件编译调试
    网上试了很多,试错后发现得如此设置。假设读者已经知道应该配置task.json和launch.json两个json来实现编译运行和调试。注意:如果是C文件,将下面的g++字符都替换为gcc字符如果是CPP文件,反之将gcc字符都替换为g++字符单文件编译launch.json{"configurations":[......
  • 比赛获奖的武林秘籍:04 电子类比赛嵌入式开发快速必看的上手指南
    比赛获奖的武林秘籍:04电子类比赛嵌入式开发快速必看的上手指南摘要本文主要介绍了电子类比赛中负责嵌入式开发同学的上手比赛的步骤、开发项目的流程和具体需要学习的内容,并结合自身比赛经历给出了相关建议。正文如何开始上手做自己第一个项目学姐也是从大一过来的,所......
  • 比赛获奖的武林秘籍:04 电子类比赛嵌入式开发快速必看的上手指南
    比赛获奖的武林秘籍:04电子类比赛嵌入式开发快速必看的上手指南摘要本文主要介绍了电子类比赛中负责嵌入式开发同学的上手比赛的步骤、开发项目的流程和具体需要学习的内容,并结合自身比赛经历给出了相关建议。正文如何开始上手做自己第一个项目学姐也是从大一过来的,所以完全......
  • vbc.exe 是 Microsoft Visual Basic 编译器的命令行工具。它用于编译 Visual Basic (.
    vbc.exe是MicrosoftVisualBasic编译器的命令行工具。它用于编译VisualBasic(.NET)的源代码文件(.vb文件)到可执行文件或者库文件(例如.exe或.dll)。vbc.exe提供了一种方式来将VisualBasic源代码编译成在.NETFramework或.NETCore平台上可执行的程序。......
  • csc.exe 是 Microsoft Visual C# 编译器的命令行工具。它用于编译 C# 源代码文件 (.cs
    csc.exe是MicrosoftVisualC#编译器的命令行工具。它用于编译C#源代码文件(.cs文件)到可执行文件或者库文件(例如.exe或.dll)。具体来说,csc.exe是用来将C#源代码编译成.NETFramework或.NETCore平台上的可执行文件或者库的工具。以下是一些常见用途和特点:......
  • 晚上定时编译android系统
    1、问题可能偶然想晚上定时编译android系统2、解决at.sh#!/bin/sh#at-fat.shnow+1min#at-lset-eset-xecho$SHELLecho'atbuildbegin'/bin/date>>at_build.log/bin/bash-c'sourcebuild/envsetup.sh>>at_build.log2>&1;lu......
  • 大话C语言:第29篇 指针
    1指针概念指针:地址的变量化形式,其存储的是内存中某个存储单元的地址。它是地址的数值表示。指针变量:一种特殊的变量,它专门用于存放变量的地址(即指针)。注意,指针和指针变量的区别:指针本身是一个地址,这个地址指向内存中的一个存储单元。它只是一个内存地址的抽象表示,没......
  • 如何使用VS Code运行C语言
    首先需要在vscode中安装好C/C++扩展插件然后是配置gcc环境(MinGW-w64文件配置)1.我用的是离线下载方式:https://sourceforge.net/projects/mingw-w64/files/下拉后按需下载正常的Win电脑下载“x86_64-posix-sjij”就可以了下载压缩包后解压,把解压的文件夹放到D盘某个位置,打开里......
  • C语言 指针和数组——指针数组的应用:命令行参数
    目录命令行参数演示命令行参数与main函数形参间的关系命令行参数什么是命令行参数(CommandLineArguments)?GUI界面之前,计算机的操作界面都是字符式的命令行界面(DOS、UNIX、Linux)例如,在DOS下拷贝文件用copyfile1.cfile2.c不......
  • C语言之考勤模拟系统平台(千行代码)
    考勤模拟系统平台目录第一章软件需求分析...1第二章系统结构设计...32.1系统架构...32.2系统组件...32.3系统流程...3第三章数据结构设计...4第四章模块划分及各模块功能介绍...64.1用户模块(UserModule)...64.2组模块(GroupModule)...64.3打卡模块(Cloc......