Linux系统下gcc命令使用详解
目录
- 一.预处理
- 二. 编译
- 三.汇编
- 四.链接
1.gcc的安装(以Ubuntu为例) sudo apt-get install build-essential
安装完后可以通过 gcc --version 查看版本。
让我们在通过gcc编译可执行文件的过程中掌握其基础应用。
准备: 先在当前目录下 使用vim新建一个.c文件 例如 666.c
$ vim 666.c
(vim的使用可在我的另一篇博客有详细的叙述,这里不多在赘述)
插入一段代码。
#include <stdio.h> main() { int a,i; a=6; for(i=0;i<3;i++) { printf("%d",a); } }
(每次我们用 cat 查看)
一.预处理
1.预处理通过对宏定义(像#define)进行展开,对头文件(像 stdio.h)进行展开,对条件进行(像ifdef)编译,展开所有宏,删除所有注释(像"//").预处理cpp把源代码,头文件预编成一个.i文件。(注意这时并不检查语法,所以即使有语法错误也不会报错。)
2.命令:
$ gcc -E (源文件名) -o (预处理文件名)
或者:
$ gcc (源文件名) > (预处理文件名)
例如按666.c 来说,预处理时可以是 :
gcc -E 666.c -o 666.i
也可以是 gcc 666.c > 666.i
二. 编译
1.编译也就是检查语法是否错误,将预处理过的文件编译成汇编文件。
2.命令:
$ gcc -S (源文件) -o (汇编文件)
例如 gcc -S 666.i -o 666.s
三.汇编
1. 汇编也就是将汇编文件生成目标文件(二进制文件)通过汇编,文本代码变成了二进制代码。(二进制代码文件以.o为后缀名)。
2.命令:
$ gcc -c (汇编文件) -o (目标文件)
例如 gcc -c 666.s -o 666.o
(这时候因为是二进制文件了,所以会乱码)
四.链接
1. 链接找到依赖的库文件(静态与动态),将目标文件链接为可执行程序。
$ gcc -c [目标文件] -o [可执行程序] -l[动态库名]
假如没有动态库的话(一般)
直接
$ gcc -c [目标文件] -o [可执行程序]
例如 gcc -c 666.o -o 666
此时会生成可执行程序 666
如果想执行使用该命令:
$ ./可执行程序
其中./是在当前目录下的意思。
例如 ./666
(注意:在一般我们使用时 如果使用 gcc 可执行文件名,会默认生成a.out 可执行文件,这时我们直接执行它时用 ./a.out )
到此这篇关于Linux系统下gcc命令使用详解的文章就介绍到这了,更多相关Linux gcc命令内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!
相关推荐
-
Linux gcc命令的具体使用
01. 命令概述 gcc命令使用GNU推出的基于C/C++的编译器,是开放源代码领域应用最广泛的编译器,具有功能强大,编译代码支持性能优化等特点. gcc是GNU编译器套件(GNU Compiler Collection),它包括了C.C++.Objective-C.Fortran.Java.Ada.Go语言和D语言的前端,也包括了这些语言的库(如libstdc++.libgcj等等).GCC的初衷是为GNU操作系统专门编写的一款编译器.GNU系统是彻底的自由软件.此处,"自由"的含义
-
Linux 在线安装软件 gcc在线安装的操作方法
Linux在线安装相关命令: yum install:全部安装 yum install <程序包>:安装指定的程序包 yum groupinsall <程序组>:安装程序组 yum -y update:升级所有包,改变软件设置和系统设置,系统版本.内核都升级 yum -y upgrade:升级所有包,不改变软件设置和系统设置,系统版本升级,内核不升级 yum update <程序包>:更新指定的程序包 yum check-update:检查可更新的程序 yum upgr
-
Linux上安装GCC编译器过程
2004年4月20日最新版本的GCC编译器3.4.0发布了.目前,GCC可以用来编译C/C++.FORTRAN.JAVA.OBJC.ADA等语言的程序,可根据需要选择安装支持的语言.GCC 3.4.0比以前版本更好地支持了C++标准.本文以在Redhat Linux上安装GCC3.4.0为例,介绍了GCC的安装过程. 安装之前,系统中必须要有cc或者gcc等编译器,并且是可用的,或者用环境变量CC指定系统上的编译器.如果系统上没有编译器,不能安装源代码形式的GCC 3.4.0.如果是这种情况,可
-
Linux系统下gcc命令使用详解
目录 一.预处理 二. 编译 三.汇编 四.链接 1.gcc的安装(以Ubuntu为例) sudo apt-get install build-essential 安装完后可以通过 gcc --version 查看版本. 让我们在通过gcc编译可执行文件的过程中掌握其基础应用. 准备: 先在当前目录下 使用vim新建一个.c文件 例如 666.c $ vim 666.c (vim的使用可在我的另一篇博客有详细的叙述,这里不多在赘述) 插入一段代码. #include <stdio.h> mai
-
Linux系统下Navicat 激活教程详解
背景 Navicat 是香港卓软数字科技有限公司生产的一系列 MySQL.MariaDB.MongoDB.Oracle.SQLite.PostgreSQL 及 Microsoft SQL Server 的图形化数据库管理及发展软件.它有一个类似浏览器的图形用户界面,支持多重连线到本地和远程数据库.它的设计合乎各种用户的需求,从数据库管理员和程序员,到各种为客户服务并与合作伙伴共享信息的不同企业或公司. –wikipedia 参考教程: Navicat Premium 15 永久破解激活工具及安装
-
linux 中的ls命令参数详解及ls命令的使用实例
一.ls命令参数详解 可以通过阅读 ls 的说明书页(man ls)来获得选项的完整列表. -a – 全部(all).列举目录中的全部文件,包括隐藏文件(.filename).位于这个列表的起首处的 .. 和 . 依次是指父目录和你的当前目录. -l – 长(long).列举目录内容的细节,包括权限(模式).所有者.组群.大小.创建日期.文件是否是到系统其它地方的链接,以及链接的指向. -F – 文件类型(File type).在每一个列举项目之后添加一个符号.这些符号包括:/ 表明是一个目录:
-
Linux系统下netstat命令详细介绍
目录 一.介绍 二.输出信息描述 三.netstat常见参数 四.netstat网络状态详解 Linux的相关keepalive参数 五.常用netstat相关命令 一.介绍 Netstat是控制台命令,是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表.实际的网络连接以及每一个网络接口设备的状态信息. Netstat用于显示与IP.TCP.UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况. 二.输出信息描述 执行netstat后输出如下: [root@sy-s
-
linux 查看端口占用命令实例详解
linux 查看端口占用命令实例详解 端口是系统非常重要的一个东东,我们经常需要查看哪个进程占用了哪个端口,或者哪个端口被哪个进程占用.废话不多说,直接上干货,教大家怎样查看系统端口占用情况. 方法一: 1.先用ps -ef | grep xxx(某个进程),可以查看某个进程的pid. 2.再用netstat -anp | grep pid号,可以查看到该进程占用的端口号! 方法二: 直接用lsof命令可以查看端口使用情况! 以上就是对linux 查看端口占用命令的讲解,如有疑问请留言,或者到
-
Linux中 find查找命令用法详解
Linux下查找文件的命令有两个,分别是locate 和 find. locate指令和find找寻档案的功能类似,但locate是透过update程序将硬盘中的所有档案和目录资料先建立一个索引数据库,在 执行loacte时直接找该索引,查询速度会较快,索引数据库一般是由操作系统管理,但也可以直接下达update强迫系统立即修改索引数据库.简单介绍下它的两个选项. #locate -i //查找文件的时候不区分大小写 比如:locate –i passwd -n
-
Linux中的tcpdump命令示例详解
前言 用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具. tcpdump可以将网络中传送的数据包的"头"完全截获下来提供分析.它支持针对网络层.协议.主机.网络或端口的过滤,并提供and.or.not等逻辑语句来帮助你去掉无用的信息. 说到这个tcpdump命令,就不得不提自己参加的中国移动内蒙古分公司第三代CRM系统的开发与实施.如果没有记错的话,那应该是2016年,自己单独负责整个
-
阿里云Linux-CentOS系统下-搭建Git服务器详解
阿里云Linux-CentOS系统下-搭建Git服务器 步骤总结: 1. 安装git 首先确认服务器是否安装Git 在Xshell中输入命令:$ rpm -qa git 结果如下表示已经安装: 如果未安装就安装git 在Xshell中输入:$ yum install git 2. 创建一个git用户,用来运行git服务: 在Xshell中输入:$ sudo adduser git 此时在阿里云服务器的根目录:/home文件夹下新增一个文件夹git 按这个层级建立文件用于存放客户端用户的公钥:/
-
dos下MSG命令使用详解
最近在编写FTP上传数据的批处理时,需要用到局域网内传输数据来提示错误,突然想起忘了N久没用的命令(net send), 结果在win7 下cmd运行net send /? 运行失败.经过百度大神的搜索,原来从vista之后net send 命令被微软取消了,再次百度,WIN 7局域网内发送消息可以使用MSG 命令.在坛子里找了好久也没找着真正的使用方法,就自己百度,google 终于搞定了,发出来让大家看下..... MSG 系统自带使用帮助 C:\Windows\system32>MSG
-
Linux系统彻底卸载MySQL数据库详解
目录 一.首先查询系统是否安装了MySQL 二.关闭MySQL服务 三.查看MySQL对应的文件夹 四.卸载并删除MySQL安装的组键服务 五.删除系统中MySQL的所有文件夹: 六.最后验证MySQL是否删除完成 一.首先查询系统是否安装了MySQL rpm -qa | grep -i mysql 输出结果表示,我安装的MySQL Server,Client都是5.6.44的,因为我系统支持的版本是要5.7+的版本,所以不得不卸载重装 二.关闭MySQL服务 查看MySQL服务运行状态: se
随机推荐
- Java 二维码,QR码,J4L-QRCode 的资料整理
- IOS 开发之UIView动画的实例详解
- ASP.NET MVC中HtmlHelper控件7个大类中各个控件使用详解
- javascript 删除数组元素和清空数组的简单方法
- Mysql中Table ‘XXX’ is marked as crashed and last (automatic?)问题解决方法
- php正则表达式获取内容所有链接
- php抓取https的内容的代码
- js实现横向伸展开的二级导航菜单代码
- 实例讲解JSP Model2体系结构(中)
- CentOS 6.3下安装部署Oracle服务器图文教程
- 用js实现table单元格高宽调整,兼容合并单元格(兼容IE6、7、8、FF)实例
- javascript 历史记录 经常用于产品最近历史浏览第1/2页
- Android中搜索图标和文字居中的EditText实例
- C语言fillpoly函数详解
- HDFS的Java API的访问方式实例代码
- C#打印PDF文档的10种方法(小结)
- 使用Feign实现微服务间文件下载
- Java中的关键字synchronized 详解
- Vue服务端渲染实践之Web应用首屏耗时最优化方案
- JavaScript中0、空字符串、'0'是true还是false的知识点分享