GNU CC(通常称为GCC)是GNU项目的编译器,他能够编译C、C++语言编写的程序。
使用gcc,程序员可以对编译过程有更多控制,编译过程分为3个阶段。
--预处理
--汇编
--链接
程序员可以在编译的任何阶段结束后体质整个编译过程以检查编译器在该阶段输出的信息
使用gcc,程序员可以控制生成二进制执行文件中调试代码的数量和类型。
和其他编译器一样,gcc也可以优化执行代码
gcc是个交叉平台编译器,所有能够在当前CPU平台上为不同操作系统开发软件
gcc对C和C++进行了一些扩展,有助于提高执行效率以及编译器进行代码优化。
gcc可以让跨平台编程更加容易,将第代码移植代价。
在命令行键入命令编译和运行这段程序--gcc -o hello hello.c
这行命令告诉gcc对源程序hello.c进行编译和链接,并使用参数-o指定创建名为hello的可执行程序。
"-o"设置输出的文件名
整个过程看上去仿佛一气呵成,但其实是分几步的
--预编译源代码
--编译目标代码
--链接程序
预编译
--在命令行键入命令
gcc -o hello1.c - E hello.c
这行命令告诉gcc对源程序hello.c进行预编译,预编译结果输出到hello1.c文件中
"-E"表示预编译
--预编译:将头文件的内容加载到hello.c文件中,形成新的文件hello1.c
编译
--在命令行键入命令
gcc -o hello.o -c hellol.c
这行命令告诉gcc对源程序hello.c进行编译,但不链接,编译输出到hello.o文件中。
--编译:将预编译好的文件编译成二进制代码,此时代码中各个库函数的实现还没有,所以这个.o文件无法执行
--"-c"命令也可以直接将源文件hello.c编译成.o文件的,不一定需要预编译过的文件
链接
--在命令行键入命令
gcc -o hello hello.o
这行命令告诉gcc对源程序hello.o进行连接,生成可执行的hello
--链接:把程序需要用到的库文件加载进来,形成可执行文件
--注意:链接可以同时链接多个文件,例如:gcc -o hello hello.o add.o

开启所有警告
--在命令行键入命令
gcc -o hello.o -c hello.c -Wall
这行命令告诉gcc对源程序hello.c进行编译的同时,打印出警告信息

编译C++源文件
--我们把hello.c文件改名为hello.cpp
gcc -o hello.o -c hello.cpp --gcc没有报错
gcc -o hello hello.o --gcc报错,说明是链接库的时候出错了
--gcc默认只链接c的标准库,并不链接c++标准库
在命令行键入命令:gcc -o hello hello.cpp -lstdc++ --编译成功
--备注 -l是gcc的参数,表示链接指定的库文件 stdc++是c++的库文件libstdc++.so的简写,两者之间不加空格
如果需要链接多个库文件;语法是:gcc -o hello hello.cpp -lstdc++ -lstdc++ -lstdc++
--但是我们编译c++一般不使用gcc,而是使用g++
gcc编译选项 -D 代表一个宏,等同于在C语言中定义#define
例如 gcc -Wall -DWIN -o hello.o -c hello.c --"-DWIN"等同于#define WIN

Linux gcc编译器的更多相关文章

  1. <转载>linux gcc编译器中使用gdb单步调试程序,程序不是顺序执行的。

    原文地址http://blog.csdn.net/abc78400123/article/details/6779108 在用gdb调试,使用s 或n单步执行程序时,发现程序不是按顺序运行的,有时莫名 ...

  2. Linux安装gcc编译器详解

    本人使用的是CentOS 6.5 64位系统,由于在安装系统的时候并没有勾选安装gcc编译器,因此需要自行安装gcc编译器. 使用yum安装gcc 对于配备了yum的Linux发行版而言,安装gcc编 ...

  3. Linux环境下的GCC编译器与GDB调试工具介绍

    假如现在我们有如下代码需要编译运行和调试.文件名为:test.c #include <stdio.h> int main() { int day, month, year, sum, le ...

  4. Linux系统(本例以Ubuntu18.04为例)安装GCC编译器

    Linux(本例以Ubuntu18.04为例)安装GCC编译器 一.安装 安装命令:sudo apt-get  build-dep  gcc 遇到 您希望继续执行吗? [Y/n] y 直接输入y回车即 ...

  5. linux应用之gcc编译器的安装及使用

    gcc是linux系统下功能十分强大的编译器. 本人使用的是CentOS 6.6 64位系统,由于在安装系统的时候并没有勾选安装gcc编译器,因此需要自行安装gcc编译器. 使用yum安装gcc 对于 ...

  6. Linux下GCC编译器的安装

    通过apt-get方式下载的Qt5.9的gcc编译器版本只是4.8.3,无法打开一些Qt5的库头文件,所以准备在Llinux下再安装一个gcc5.3.0. 查看gcc版本 ubuntu下查看gcc的版 ...

  7. Linux安装GCC编译器

    今天突然想到怎么样在Red Hat 8上练习C,安装GCC编译器,并运行出"hello world". 于是就有了以下操作 1 [root@localhost ~]# yum in ...

  8. 在CentOS 7.2下升级gcc编译器的版本

    默认情况下,CentOS 7.2预装的gcc版本是4.8.x,通过执行命令 gcc -v 可以看到,一般情况下这个版本的编译器已经满足需要了,但是某些特殊的时候为了支持C++更高的特性,需要对gcc编 ...

  9. Linux gcc 编译日记

    gcc 编译器是众多编译器组合入口,例如在编译 .cpp 文件时,使用c++ 编译器,编译.c 文件时,使用c编译器. 在编译c++程序时, 库文件与头文件可通过 -L[dir] 指定库目录 , -l ...

随机推荐

  1. LiDAR Textbook & Automated Road Network Extraction

    Original article published here, Posted on March 18, 2009 by lidar A positive feedback loop is begin ...

  2. Android 多线程之IntentService 完全详解

    关联文章: Android 多线程之HandlerThread 完全详解 Android 多线程之IntentService 完全详解 android多线程-AsyncTask之工作原理深入解析(上) ...

  3. Swift,数组

    1.创建(Array)数组(数组内的类型一定要相同,有序的可重复) (1)创建默认值的数组 let array:[Int] array=[Int](repeatElement(3,count:5)) ...

  4. Server 2008 R2 安装活动目录和配置DNS及故障解决

    一.安装windows2008_64bit_r2 给服务器设置密码:xxxxxxxx 二.安装配置DNS规则 1.更改服务器主机名:DCserver 2.配置静态IP地址 IP地址:10.0.100. ...

  5. 一起來玩鳥 Starling Framework(9)Particle

    最後,來看看Starling裡一個很炫的功能:Particle.Particle屬於extension,所以要另外下載檔案:Starling-Extension-Particle-System.下載之 ...

  6. numpy基础知识

    官网简介: http://www.numpy.org/ ndarry基本属性 ndarry是Numpy中的N维数组对象(N dimentional arrya,ndarray) ndarry中所有的元 ...

  7. C++ 字符串分割函数 str_split

    void str_split(const std::string & src, const std::string & sep, std::vector<std::string& ...

  8. rabbitMq视频教程

    http://edu.51cto.com/index.php?do=lesson&id=83136

  9. wireshark过滤语法总结 (转载)

    做应用识别这一块经常要对应用产生的数据流量进行分析. 抓包采用wireshark,提取特征时,要对session进行过滤,找到关键的stream,这里总结了wireshark过滤的基本语法,供自己以后 ...

  10. java学习路线-Java技术人员之路从0基础到高级

    满满的  全是干货 java基础: 尚学堂 马士兵   个人推荐 历经5年锤练--史上最适合刚開始学习的人入门的Java基础视频   很具体   适合 时间多的看 传智播客java基础班 马士兵线程 ...