【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 ...
随机推荐
- Solr 6.0 学习(五)solr基本查询和高级查询
参考:http://www.cnblogs.com/rainbowzc/p/4354224.html 查询参数 常用: q - 查询字符串,必须的. fl - 指定返回那些字段内容,用逗号或空格分隔多 ...
- python学习笔记(十三): 多线程多进程
一.线程&进程 对于操作系统来说,一个任务就是一个进程(Process),比如打开一个浏览器就是启动一个浏览器进程,打开一个记事本就启动了一个记事本进程,打开两个记事本就启动了两个记事本进程, ...
- Vue.js+Koa2移动电商 笔记
一.搭建项目架构: 项目采用Webpack+Vue-router的架构方式,开始安装(基于windows系统) 1.按Win+R,然后在文本框中输入cmd,回车打开命令行,输入vue-cli安装命令: ...
- 函数~匿名方法~lambda的逐渐过渡思想
前提:基于委托实现 (1)使用函数名称 delegate void Printer(string s);//(1)申明委托 static void Main(string[] args) { //(3 ...
- Shachar Fleishma的论文,做点云重建的几篇论文都不错
http://www.sci.utah.edu/~shachar/ 几篇论文都不错,但貌似05年之后就没有什么动作了.
- leetcode575
public class Solution { public int DistributeCandies(int[] candies) { var dic = new Dictionary<in ...
- Redis实战——redis主从备份和哨兵模式实践
借鉴:http://redis.majunwei.com/topics/sentinel.html https://blog.csdn.net/u011784767/article/detai ...
- RimLight(轮廓光) - Shader
[RimLight(轮廓光) - Shader] RimLight指的是物体的轮廓光.效果如下: 轮廓光的强度通过 1.0 - dot(normal, eye_vector)来计算.使用这个公式,则指 ...
- 安装kali linux 2017.1 【二、安装VMware-tools 以及相关问题处理】
一.基本步骤: 1.VMware Workstation菜单栏中,选择“虚拟机”,”安装VMware Tools...“. 2.挂载VMware Tools安装程序到/mnt/cdrom/. mkdi ...
- 【总结整理】UGC内容
除了内容了产品,还有什么适合引入UGC? :引发讨论,诱导参与,然后促成销售. User Generated Content,也就是用户生成内容的意思. 购买类产品,内容催生购买 1.为用户购买提供思 ...