Linux系统C语言开发工具

第一个Linux环境下的C语言程序

1.编写程序
在这里插入图片描述
2.编译程序
在这里插入图片描述
3.运行程序
2

编译C语言程序

1.gcc编译器
gcc编译器介绍源自百度百科
gcc支持编译的后缀名

后缀名 对应语言 后缀名 对应语言
.c C原始程序 .ii 已经过预处理的C++原始程序
.C C++原始程序 .s 汇编语言原始程序
.cc C++原始程序 .S 汇编语言原始程序
.cxx C++原始程序 .h 预处理文件(头文件)
.m Objective-C原始程序 .o 目标文件
.i 已经经过预处理的C原始程序 .a/.s 编译后的库文件

命令使用格式

gcc [options] filename-list

2.GCC编译流程
我们通过一个例题来分析其过程
设计一个程序,程序运行时要求输入两个整数,将它们求和后的结果输出。本例通过使用gcc的参数-E,-S,-c,-o控制gcc编译流程,据此了解gcc的编译过程,进而进一步认识gcc的灵活性。

  1. 用vim编写源程序,生成源程序文件“3-3.c”
  2. 用gcc的“-E”参数预处理,生成经过预处理的源程序文件3-3.i
  3. 用gcc的-S参数编译生成汇编语言程序文件“3-3.s”
  4. 用gcc的-c参数汇编,生成二进制文件3-3.o
  5. 使用gcc的-o参数处理,把3-3.o和一些用到链接库文件连接成可执行文件3-3.
编写代码

在这里插入图片描述

生成经过预处理产生的源程序文件3-3.i

在这里插入图片描述

在这里插入图片描述

预编译

用gcc的-S参数编译生成汇编语言程序文件“3-3.s”
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

汇编阶段

在这里插入图片描述

链接阶段

。
在这里插入图片描述

gcc编译器的主要参数

  1. 总体参数
参数 含义 参数 含义
-c 只编译不链接,生成目标文件 -v 显示gcc的版本号
-S 只编译不汇编,生成汇编代码 -I dir 在头文件的搜索路径中添加dir目录
-E 只进行预编译 -L dir 在库文件的搜索路径列表中添加dir目录
-g 在可执行程序中包含调试信息 -static 链接静态库
-o file 把文件输出到file中 -library 连接名为library的库文件

我们以-I dir 参数举例
栗子
设计一个程序,要求把键盘输入的字符串原样输出到屏幕上,把标准输入输出库文件放在自定义的头文件中,源程序文件名为3-4.c,自定义的头文件为my.h保存在 /home/gao中。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在include语句中,“<>”表示在默认路径"/usr/include"中搜索头文件。引号表示在指定目录中搜索。

  1. 告警和出错参数
参数 含义
-ansi 支持ANSI的C程序
-pedantic 允许发出ANSI C标准所列出的全部告警信息
-pedantic-error 允许发出ANSI C 标准所列出的全部错误信息
-w 关闭所有告警
-Wall 允许发出gcc提供的所有有用的告警信息
-werror 把所有的告警信息转化为错误信息,并在告警发生时终止编译

栗子
设计一个程序,使它包含一些非标准语法。要求打印“aaaa”,通过这个例子熟悉gcc的常用告警和出错参数使用。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  1. 优化参数
    直接看例子
    设计一个程序,要求循环8亿次左右,每次都有一些可以优化的加减乘除运算。比较gcc的编译参数-On优化程序前后的运行速度。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    点击链接加入群聊【程序员技术交流群】:添加链接描述
发布了84 篇原创文章 · 获赞 24 · 访问量 4346

猜你喜欢

转载自blog.csdn.net/qq_41827511/article/details/102225548