【Linux】GCC编译器
【简介】
GCC是Linux下的编译工具集,是GNU Compiler Collection的缩写,包含gcc g++ 等编译器。GCC工具集不仅能编译C/C++语言,其他例如Object-c、Pascal、Fortran、Java、Ada等语言进行编译。GCC在可以根据不同的硬件平台进行编译,即能进行交叉编译,在A平台上编译B平台上的程序,支持常见的X86、ARM、PowerPC、mips等,及Linux、windows等软件平台。C语言的编译命令为gcc,C++的编译命令为g++。
【头文件和库文件】
进行程序编译的时候,头文件路径和库文件路径是编译器默认查找的地方,如下:
头文件:
按先后顺序查找如下目录:
/usr/local/include
/usr/lib/gcc/i486-Linux-gnu/4.7/include
/usr/include
库文件:
按先后顺序查找如下目录:
/usr/lib//i486-Linux-gnu/4.7/...
/lib/
/usr/lib/
【编译的过程】
预编译——>编译和优化——>汇编——>链接
【单个文件编译成执行文件】
gcc 源文件名 。添加选项 “-o”可以指定可执行文件的名称。例:
$gcc -o test hello.c
上面命令把hello.c源文件编译成可执行文件test。
【编译成目标文件】-c
目标文件是指经过编译器的编译生成的CPU可识别的二进制代码,因为没有进行链接,所以不能执行。
$gcc -c hello.c
上面命令会生成名字为hello.o的目标文件
也可以加上-o指定生成目标文件的名称:
$gcc -c -o test.o hello.c
一次编译多个文件:
$gcc -c file1.c file2.c file3.c
【多文件编译】
可以使用一个命令编译,例如main.c使用string.c中的函数,可以一起编译生成一个可执行文件:
$gcc -o test string.c main.c
也可以先编译,再链接:
$gcc -c string.c main.c
$gcc -o test string.o main.o
【预处理】-E
预处理过程将源文件中的头文件包含进源文件中,并且将头文件中定义的宏展开:
$gcc -E string.c
以上命令生成预处理后的文件 string.i
【编译成汇编语言】-S
$gcc -S string.c
以上的命令生成汇编语言文件string.s
【Linux】GCC编译器的更多相关文章
- <转载>linux gcc编译器中使用gdb单步调试程序,程序不是顺序执行的。
原文地址http://blog.csdn.net/abc78400123/article/details/6779108 在用gdb调试,使用s 或n单步执行程序时,发现程序不是按顺序运行的,有时莫名 ...
- Linux gcc编译器
GNU CC(通常称为GCC)是GNU项目的编译器,他能够编译C.C++语言编写的程序. 使用gcc,程序员可以对编译过程有更多控制,编译过程分为3个阶段. --预处理 --汇编 --链接 程序员可以 ...
- 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 ...
随机推荐
- Julia - 函数运算符
Julia 中,大多数运算符都是支持特定语法的函数 && . || 等短路运算是例外,它们不是函数,因为短路求值先算前面的值,再算后面的值 对于函数运算符,可以像其它函数一样,把参数列 ...
- js控制电池
js控制电池 判断设备是否在充电 navigator.getBattery().then(function(battery){ if(battery.charging) { alert("电 ...
- Flask之模板
2 了解Jinja2模板 知识点 模板使用 变量 过滤器 web表单 控制语句 宏.继承.包含 Flask中的特殊变量和方法 3.1 模板 在前面的示例中,视图函数的主要作用是生成请求的响应,这是最简 ...
- jquery 实现点击图片居住放大缩小
该功能是基于jquery实现的,所以 第一步则是引入jquery jquery下载地址:https://jquery.com/download/ 或者使用此时调试的版本(3版本) /*! jQuery ...
- C# 重构
重构是在编写代码后在不更改代码的外部行为的前提下通过更改代码的内部结构来改进代码的过程. 一.何时需要重构 1.代码中存在重复的代码: 如果类中有重复的代码块,需将其提炼出一个新的独立方法,如果是不同 ...
- U盘启动安装WIN7(包含资源的地址)
这几天在装win7和linux双系统,整理一下 第一种是在正常的windows下,网上下了镜像之后,装虚拟光驱,然后双击安装,按步骤执行即可,这个没什么好讲的. 第二种是windows坏掉,或者木有系 ...
- GeoServer之styles定制
GeoServer之styles定制 GeoServer中styles类似于css,将地图中的点线面画出一层皮肤,引用在图层上.不同的地方在于.GeoServer中的styles用的是sld语法,也就 ...
- [转] c# 的传递参数值传递与传递引用的区别,ref与out区别
值传递 C#默认都是值传递的,就是复制变量的一个副本传递给方法,所以在退出方法后,对变量的修改无效. 但是要注意,当传递是引用类型时,因为引用类型是一个引用的地址,所以修改引用地址指向的对象时,一样会 ...
- Unity Mecanim 动画系统
1. Animator 组件 Controller:使用的Animator Controller文件. Avatar:使用的骨骼文件. Apply Root Motion:绑定该组件的GameObje ...
- Elasticsearch-PHP 概述
最近在学习使用Elasticsearch,并且是和PHP一起使用的,看到了Elasticsearch-PHP,其实是Elasticsearch为PHP提供的客户端,那么我们来学习一下API文档,如何在 ...