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. SQL Server DBA 文章:116篇 --DBA_Huangzj

    http://blog.csdn.net/DBA_Huangzj/article/category/1133081

  2. vs生成命令和属性的宏

    在vs属性页面中编辑后期生成事件... 下面是vs中宏的描述信息. http://i.cnblogs.com/EditPosts.aspx?opt=1 高级用法: 磨刀不误砍柴工——VS生成事件

  3. 在Delphi中使用键盘勾子获取键盘输入(译--5月7日)

    http://blog.sina.com.cn/s/blog_502b2e970100949s.html 获取键盘输入以控制无法接受输入焦点的控件考虑一些游戏,显示图片在TPainBox,但是TPai ...

  4. HTML5 canvas图形库 RGraph【转】

    RGraph是一个使用HTML5 Canvas标签实现的图表制作Library.利用该Library生成的Chart具有可交互性,当鼠标点击或移过时会显示相应的信息,可以动态加载Chart或对特殊点进 ...

  5. 安装Scala 找不到或无法加载主类 scala.tools.nsc.MainGenericRunner 错误

    对于安装Scala时 找不到或无法加载主类 scala.tools.nsc.MainGenericRunner 错误,不管是linux还是window系统,原因很大可能是scala的安装路径中出现空格 ...

  6. JMS两种消息模型

    前段时间学习EJB.接触到了JMS(Java消息服务),JMS支持两种消息模型:Point-to-Point(P2P)和Publish/Subscribe(Pub/Sub),即点对点和公布订阅模型. ...

  7. eclipse 配置maven 项目tomcat 运行

  8. 小程序常用API介绍

    小程序常用API接口  wx.request https网络请求 wx.request({ url: 'test.php', //仅为示例,并非真实的接口地址 method:"GET&qu ...

  9. 获取 input 输入框的值

    1.使用原生javascript: 方法一: <html> <head> <script language="javascript"> func ...

  10. Jersey 1.18 API文档

    Jersey 1.18 API文档 我自己制作了Jersey 1.18 API CHM文档, 下载地址见: http://download.csdn.net/detail/chszs/7334869 ...