【Linux】开发工具3 : gcc/g++的使用
其他篇章 【C语言专栏】其他篇章【Linux专栏】上期回顾 【Linux】开发工具2vim文章目录前言1. gcc/g的使用1.1 预处理进行宏替换1.2 编译生成汇编1.3 汇编生成机器可识别代码1.4 链接生成可执行文件或库文件1.5 gcc 可以一步生成一个执行程序将四个步骤合并前言在使用一门编辑语言的时候我们都必须安装相应的开发包即头文件和库文件头文件函数的声明库文件函数的实现查看头文件ls /usr/include/1. gcc/g的使用gcc编译C语言g编译 C/C生成可执行文件预处理、编译、汇编、链接1.1 预处理进行宏替换主要处理以# 开头的指令核心任务有宏替换把所有 #define 定义的宏包括函数宏、常量宏直接替换成对应的文本。去注释注释不参与编译去掉可以减少文件大小条件编译#ifdef / #ifndef / #if / #else / #endif 等指令只保留满足条件的代码段删除不满足的分支。头文件展开把 #include xxx.h / #include “xxx.h” 对应的头文件内容完整复制到当前文件中。命令gcc -E test.c -o test.i选项“-E”,该选项的作⽤是让 gcc 在预处理结束后停⽌编译过程。选项“-o”是指⽬标⽂件,“.i”⽂件为已经过预处理的C原始程序。注意区分命令作用生成的文件类型能否直接运行gcc -E test.c -o test.i只做预处理C源码文件 .i 不能gcc test.c -o test完整编译链接可执行程序可以示例结果解析#define DEBUG 1 定义了一个名为 DEBUG 的宏值为1。#ifdef DEBUG 预处理指令意思是“如果 DEBUG 这个宏被定义了就执行下面的代码”。因为 DEBUG 已经被定义了所以预处理时会保留 printf(“Debug mode\n”);这行代码程序运行时会打印 Debug mode 。1.2 编译生成汇编在这个阶段中,gcc ⾸先要检查代码的规范性、是否有语法错误等,以确定代码的实际要做的⼯作,在检查⽆误后,gcc 把代码翻译成汇编语⾔。-S仅执行编译停止后续流程.s输出的汇编文件test.s命令gcc –S test.i –o test.s[qianyvVM-0-9-centos~]$ gcc-S test.c-o test.s[qianyvVM-0-9-centos~]$ ll total28-rw-rw-r--1qianyv qianyv135Apr2614:19test.c-rw-rw-r--1qianyv qianyv16878Apr2614:11test.i-rw-rw-r--1qianyv qianyv446Apr2615:00test.s-rw-r--r--1root root0Apr1922:08test.txt1.3 汇编生成机器可识别代码汇编阶段是把编译阶段⽣成的“.s”⽂件转成⽬标⽂件-c仅执行汇编生成目标文件.o输出的目标文件test.o—二进制格式不能执行命令gcc –c test.s –o test.o[qianyvVM-0-9-centos~]$ gcc-c test.s-o test.o[qianyvVM-0-9-centos~]$ ll total32-rw-rw-r--1qianyv qianyv135Apr2614:19test.c-rw-rw-r--1qianyv qianyv16878Apr2614:11test.i-rw-rw-r--1qianyv qianyv1496Apr2615:03test.o-rw-rw-r--1qianyv qianyv446Apr2615:00test.s-rw-r--r--1root root0Apr1922:08test.txt1.4 链接生成可执行文件或库文件将目标文件.o和库进行链接就得到了可执行程序-o用来指定可执行程序的名称这里我写了是test不写的话默认是 a.outgcc test.o -o test[qianyvVM-0-9-centos~]$ gcc test.o-o test[qianyvVM-0-9-centos~]$ ll total44-rwxrwxr-x1qianyv qianyv8360Apr2615:08test-rw-rw-r--1qianyv qianyv135Apr2614:19test.c-rw-rw-r--1qianyv qianyv16878Apr2614:11test.i-rw-rw-r--1qianyv qianyv1496Apr2615:03test.o-rw-rw-r--1qianyv qianyv446Apr2615:00test.s-rw-r--r--1root root0Apr1922:08test.txt1.5 gcc 可以一步生成一个执行程序将四个步骤合并
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2556960.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!