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. MathType输入矩阵或者向量的注意事项

    如图A区域是换行搞得,BC是插入矩阵,AC明显看着不一样,就是说行间不要使用换行,列间隔不要用空格(ctrl+shift+space),直接插入矩阵,向量就是矩阵的行或者列数目是1. 还有就是需要注意 ...

  2. Docker时间和宿主同步

    通过date命令查看时间 查看主机时间 [root@localhost ~]# date 2016年 07月 27日 星期三 22:42:44 CST 查看容器时间 root@b43340ecf5ef ...

  3. C#之Hello World(入门 )

    C#是一种简单.现代.面向对象和类型安全的编程语言. C#由C和C++发展而来.C#(英文发音C sharp)牢固地植根于C和C++语言族谱中,是Microsoft专门为使用.NET平台而创建的. • ...

  4. 在eclipse上配置tomcat

    Eclipse中Tomcat的配置及简单例子 Eclipse中Tomcat的配置是很简单的一个工作,作为一名刚刚起步的编程菜鸟,我将这个配置的过程和简单的例子写下来记录,也希望能给像我怎样的新手一些帮 ...

  5. 报错:numRecords must not be negative

    报错的原因:删除已经使用过的kafka topic,然后新建同名topic 解决方法:把topic名字换一下 (有其他更好的解决方法,可以不修改topic名)

  6. iOS 系统框架

    iOS的系统架构分为四个层次:核心操作系统层(Core OS layer).核心服务层(Core Services layer).媒体层(Media layer)和可触摸层(Cocoa Touch l ...

  7. 我的superui开源后台bootstrap开发框架

    我的superui开源后台bootstrap开发框架:http://git.oschina.net/tzhsweet/superui

  8. HDU1157 Who&#39;s in the Middle

    Who's in the Middle Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Othe ...

  9. Android编程之常识 - 混淆

    1,什么是混淆编译 ProGuard是一个免费的java类文件压缩,优化,混淆器.它探测并删除没有使用的类,字段,方法和属性.它删除没有用的说明并使用字节码得到最大优化.它使用无意义的名字来重命名类, ...

  10. 基于Jekyll的博客模板

    代码地址如下:http://www.demodashi.com/demo/13147.html 效果 环境配置 环境 Windows 10 Git Bash 安装ruby 下载rubyinstalle ...