Linux gcc编译器
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编译器的更多相关文章
- <转载>linux gcc编译器中使用gdb单步调试程序,程序不是顺序执行的。
原文地址http://blog.csdn.net/abc78400123/article/details/6779108 在用gdb调试,使用s 或n单步执行程序时,发现程序不是按顺序运行的,有时莫名 ...
- Linux安装gcc编译器详解
本人使用的是CentOS 6.5 64位系统,由于在安装系统的时候并没有勾选安装gcc编译器,因此需要自行安装gcc编译器. 使用yum安装gcc 对于配备了yum的Linux发行版而言,安装gcc编 ...
- Linux环境下的GCC编译器与GDB调试工具介绍
假如现在我们有如下代码需要编译运行和调试.文件名为:test.c #include <stdio.h> int main() { int day, month, year, sum, le ...
- Linux系统(本例以Ubuntu18.04为例)安装GCC编译器
Linux(本例以Ubuntu18.04为例)安装GCC编译器 一.安装 安装命令:sudo apt-get build-dep gcc 遇到 您希望继续执行吗? [Y/n] y 直接输入y回车即 ...
- linux应用之gcc编译器的安装及使用
gcc是linux系统下功能十分强大的编译器. 本人使用的是CentOS 6.6 64位系统,由于在安装系统的时候并没有勾选安装gcc编译器,因此需要自行安装gcc编译器. 使用yum安装gcc 对于 ...
- Linux下GCC编译器的安装
通过apt-get方式下载的Qt5.9的gcc编译器版本只是4.8.3,无法打开一些Qt5的库头文件,所以准备在Llinux下再安装一个gcc5.3.0. 查看gcc版本 ubuntu下查看gcc的版 ...
- Linux安装GCC编译器
今天突然想到怎么样在Red Hat 8上练习C,安装GCC编译器,并运行出"hello world". 于是就有了以下操作 1 [root@localhost ~]# yum in ...
- 在CentOS 7.2下升级gcc编译器的版本
默认情况下,CentOS 7.2预装的gcc版本是4.8.x,通过执行命令 gcc -v 可以看到,一般情况下这个版本的编译器已经满足需要了,但是某些特殊的时候为了支持C++更高的特性,需要对gcc编 ...
- Linux gcc 编译日记
gcc 编译器是众多编译器组合入口,例如在编译 .cpp 文件时,使用c++ 编译器,编译.c 文件时,使用c编译器. 在编译c++程序时, 库文件与头文件可通过 -L[dir] 指定库目录 , -l ...
随机推荐
- 下载谷歌浏览器(Chrome)扩展离线安装包crx文件最简单的方法
转:http://alyzq.com/?p=627 如果不会使用,请看下面的操作步骤 引言(可以不看): 下面介绍一下,下载谷歌浏览器(Google Chrome)扩展的离线安装包crx文件最简单的方 ...
- Android ViewStub的使用方法
大家写项目的时候肯定会有一些东西提前写好,可是不到一定条件是不想让它显示出来的.我们可能的做法就是让它View.GONE 或View.INVISIBLE等到一定条件了在代码里面这设置View.VISI ...
- django admin中文输入编码错误
修改models里面的str方法,改为unicode class Category(models.Model): name = models.CharField(max_length=20, verb ...
- webpack配置:css文件打包、JS压缩打包和HTML文件发布
一.CSS文件打包 1.在src下新建css文件,在css文件下新建index.css文件,输入以下代码 body{ color:red; font-size:20px; } 2.css建立好后,需要 ...
- elasticsearch term 查询之一
1.前言 term级别查询将按照存储在倒排索引中的确切字词进行操作,这些查询通常用于数字,日期和枚举等结构化数据,而不是全文本字段. 或者,它们允许您制作低级查询,并在分析过程之前进行. term级别 ...
- Django——如何使用Template以及如何向template传递变量
如何使用模板系统 在Python代码中使用Django模板的最基本方式如下: 可以用原始的模板代码字符串创建一个 Template 对象, Django同样支持用指定模板文件路径的方式来创建 Temp ...
- DEB方式在UBUNTU安装ODOO 8.0
odoo在ubuntu最简单最快速安装方式是deb方式,基本无需再去改数据库配置文件,全自动化了,odoo中文网推荐新手采用此方法 1 安装数据库:sudo apt-get install postg ...
- 【Java】Java_02环境配置
JDK是什么?JRE是什么?JDK和JRE的区别? Java Runtime Environment (JRE) 包含: Java虚拟机.库函数.运行Java应用程序和Applet所必须文件 Java ...
- Android平台Native开发与JNI机制详解
源文链接: http://mysuperbaby.iteye.com/blog/915425 一个Native Method就是一个Java调用非Java代码的接口.一个Native Method是这 ...
- ios 调试过程捕获异常Stack 信息
在AppDelegate,定义方法 void catchExceptionHandler(NSException *exception) { NSLog(@"CRASH: %@", ...