linux操作系统 第04章 Linux C编程基础--GCC

                                                                                   第四章    Linux C编程基础--GCC


主要内容

gcc 简介
利用 gcc 编译 c 程序
利用 make 工具简化编译过程
调试

开发工具环境

开发工具:编辑工具、编译工具和调试工具,甚至配置工具和项目管理工具。
开发环境:

    (1)基于文本的:vim+gcc+gdb+make

    2)集成开发平台:Eclipse+CDT

基于文本的开发平台

编辑工具: vim emacs
编译工具: gcc ,要使用指令完成编译,比如: gcc –o hello hello.c
调试工具: gdb
项目管理工具: make ,编写 makefile 文档来完成相关的一系列 gcc 指令。

gcc简介

名称:
G NU project C and C ++ C ompiler
G NU C ompiler C ollection
gcc 是一个全功能的  ANSI C  兼容编译器,它是所有 UNIX 系统可用的 C 编译器。
gcc 是可以在多种硬体平台上编译出可执行程序的超级编译器,其执行效率与一般的编译器相比平均效率要高 20%~30%
 
C/C++ 编译的控制
预处理:对源代码文件中的文件包含 (include) 、预编译语句 ( 如宏定义 define ) 进行分析。
编译:就是把 C/C++ 代码“翻译”成汇编代码。
汇编:将第二步输出的汇编代码翻译成符合一定格式的机器代码,生成以 .s 为后缀的目标文件。
链接:将上步生成的目标文件和系统库的目标文件和库文件链接起来,最终生成了可以在特定平台运行的可执行文件。
 

编译过程的四个阶段:

扫描二维码关注公众号,回复: 12444867 查看本文章

gcc的使用

基本使用格式
$ gcc   [ 选项 ]   [ 文件名 ]
例:
//text.c

#include<stdio.h>
void main()
{
  printf(“Hello World!\n”);
}
$gcc test.c
$./a.out
Hello World!

或

$gcc -o test  test.c 
$./test
Hello World!

GCC常用选项及含义

选项 含义
-o file 将经过gcc处理过的结果存为文件file,这个结果文件可能是预处理文件、汇编文件、目标文件或者最终的可执行文件。假设被处理的源文件为source.suffix,如果这个选项被省略了,那么生成的可执行文件默认名称为a.out;目标文件默认名为source.o;汇编文件默认名为source.s;生成的预处理文件则发送到标准输出设备。
-c 只编译,不链接成为可执行文件,编译器只是由输入的.c等源代码文件生成.o为后缀的目标文件。在对源文件进行查错时,或只需产生目标文件时可以使用该选项。
-g[gdb] 在可执行文件中加入调试信息,方便进行程序的调试。如果使用中括号中的选项,表示加入gdb扩展的调试信息,方便使用gdb来进行调试
-O[0123] 对生成的代码使用优化,中括号中的部分为优化级别,缺省的情况为2级优化0为不进行优化。注意,采用更高级的优化并不一定得到效率更高的代码。
-w 禁止所有警告
-Wwarning 允许产生warning类型的警告,warning可以是:mainunused等很多取值,最常用是-Wall,表示产生所有警告。如果warning取值为error,其含义是将所有警告作为错误(error),即出现警告就停止编译。
-pedantic [-errors] 表示gcc只发出ANSI/ISO C标准列出的所有警告, -pedantic –errors 仅仅针对错误。
-ansi 支持ANSI/ISO C 的标准语法,取消GNU的语法中与该标准有冲突的部分,但并不保证生成与ANSI兼容代码。
-Idirname dirname所指出的目录加入到程序头文件目录列表中,是在预编译过程中使用的参数。
-Ldirname dirname所指出的目录加入到程序函数档案库文件的目录列表中,是在连接过程中使用的参数。在预设状态下,连接程序ld在系统的预设路径中(/usr/lib)寻找所需要的档案库文件,这个选项告诉连接程序,首先到-L指定的目录中去寻找,然后到系统预设路径中寻找,如果函数库存放在多个目录下,就需要依次使用这个选项,给出相应的存放目录。
-lname 在连接时,装载名字为“libname.a的函数库,该函数库位于系统预设的目录或者由-L选项确定的目录下。例如,-lm表示连接名为“libm.a的数学函数库。

例1

... ... 太烦了,这破玩意不过给我贴图片截图 ... ...

... ... 不写了,跳过第四五章,需要资源私聊 ... ...

猜你喜欢

转载自blog.csdn.net/weixin_41939983/article/details/107706542