首页 > 系统相关 >13_Linux第一个程序HelloWorld

13_Linux第一个程序HelloWorld

时间:2024-03-10 15:36:02浏览次数:29  
标签:预处理 文件 gcc 13 HelloWorld 链接 编译 Linux hello

Linux第一个程序HelloWorld

1.什么是gcc?

gcc 全称(gun compiler collection)既编译套件,gcc 可以支持多种计算机体系结构,比如X86,MIPI,ARM。

Ubuntu 默认自带gcc可以使用gcc -v 命令来查看Ubuntu 的gcc

image-20240309230030072

2.gcc 基本用法

gcc 选项 文件名
举例:gcc hello.c -o hello -o 参数为指定生成文件的名字

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

image-20240309230114373如果我们不使用-o 参数指定我们生成文件的名称,直接输入gcc hello.c 编译完会得到一个a.out 文件,执行这个a.out 的结构和执行hello 是一样的。

image-20240309230121101file 命令:
功能:查看文件类型
格式:file 文件名

image-20240309230127245是用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 得到预处理后的文件

image-20240309230136826第二阶段,编译,把文件编译成汇编代码
-S 参数将hello.i 文件编译成hello.s 文件

image-20240309230141706第三阶段,汇编,把汇编文件编译机器码
-c 参数可以把hello.s 文件编译成hello.o 文件

image-20240309230146174第四阶段,链接直接把目标文件编译成可以执行的文件

image-20240309230159223链接分为静态链接和动态链接,gcc 默认的是动态链接
特点:生成的程序下,但是需要依赖库
静态链接:使用-static 参数就是静态链接,因为程序里面包含了需要的库,所以体积比较大。

image-20240309230203709

标签:预处理,文件,gcc,13,HelloWorld,链接,编译,Linux,hello
From: https://www.cnblogs.com/mzx233/p/18064235

相关文章

  • 12_Linux文件系统概念
    Linux文件系统概念1.什么是文件系统?操作系统中负责管理和存储文件系统的软件称为文件系统2.Linux为什么需要文件系统?Linxu系统必须要挂载一个文件系统,如果系统不能从指定的设备挂载,系统就会出错。3.Linux常见文件系统的类型都有哪些?ext3,ext4,proc文件系统,sysfs文件系统......
  • 11_Linux目录结构讲解
    Linux目录结构讲解1.Linux目录结构Linux整个文件系统是从/目录开始2.Linux文件层次标准为了解决不同的开发人员之间不统一的问题,文件层次标准简称FHS,全称filesystemhierarchstandardFHS定义了俩层规范:/目录下面应该要放什么文件,比如/etc下面就应该放配置文件。第二层......
  • 15_编写第一个自己的Linux的命令
    编写第一个自己的Linux的命令1.什么是命令?命令就是可执行程序。比如ls-al命令ls就是程序的名字al就是参数ps命令:功能:显示进程的动态。2.定义一个自己的命令给自己的gcc生成的可执行文件的路径添加到$PATH环境变量中,就可以在任何地方都可以使用这个可执行文件......
  • 14_Linux环境变量讲解
    Linux环境变量讲解1.什么是环境变量?概念:环境变量是系统预设置的参数。Linux是一个多用户的操作系统,所以每一个用户也都有自己的环境变量举例:比如我们之前学习的命令我们不管在哪个路径下输入,都是可以执行成功的,因为系统已经把命令的搜索路径提前设置好了2.常用变量PATH这个......
  • 第13章_约束
    第13章_约束讲师:尚硅谷-宋红康(江湖人称:康师傅)官网:http://www.atguigu.com1.约束(constraint)概述1.1为什么需要约束数据完整性(DataIntegrity)是指数据的精确性(Accuracy)和可靠性(Reliability)。它是防止数据库中存在不符合语义规定的数据和防止因错误信息的输入输出造成无效......
  • 在Linux中,发现CPU负载过大,接下来怎么办?
    在Linux系统中,如果发现CPU负载过高,遵循以下步骤进行故障排查和解决:1.监控与确认问题使用top或htop命令实时查看当前CPU使用情况,并找出占用CPU较高的进程:top或者htop#需要先安装htop工具在top中按1可以看到每个单独的CPU核心的负载情况。使用ps或psaux......
  • 在Linux中,如何获取CPU的总核心数?
    在Linux中,可以通过几种不同的命令来获取CPU的总核心数。具体如下:查看物理CPU个数:可以通过查看/proc/cpuinfo文件来获取物理CPU的个数。使用以下命令:cat/proc/cpuinfo|grep"physicalid"|sort-u|wc-l这个命令会显示物理CPU的个数。查看每个物理CPU的核数:同样,可......
  • 在Linux中,如何查看占用CPU最多的进程?
    在Linux中,有多种方法可以查看占用CPU最多的进程。以下是几种常用的方法:使用top命令:top命令是Linux中常用的性能分析工具,可以实时显示系统中各个进程的资源占用情况,包括CPU使用率。打开终端,输入top命令,按下回车键。top命令会显示出当前系统中CPU使用率最高的进程列表。默认情......
  • 运维必备Linux学习day1(建议收藏,运维面试100%会涉及)
    一.找回root密码找到以““Linux16”开头内容所在的行数”,在行的最后面输入:init=/bin/sh输完红色命令后Ctrl+X命令接下来在光标闪烁处,输入指令:mount-oremount,rw/(注意:各个单词间有空格)光标闪烁的位置中,输入passwd,输入一次密码并确认密码光标闪烁的位置中,touch/.auto......
  • linux Shell 命令行-01-intro 入门介绍
    拓展阅读linuxShell命令行-00-intro入门介绍linuxShell命令行-02-var变量linuxShell命令行-03-array数组linuxShell命令行-04-operator操作符linuxShell命令行-05-test验证是否符合条件linuxShell命令行-06-flowcontrol流程控制linuxShell命令行-07-f......