【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 中的函数可以被匿名构造,成为匿名函数,匿名函数是没有函数名的函数 julia> x -> x + 1 #3 (generic function with 1 method) 这 ...
- Julia - 分数
在 Julia 中,使用“//”运算符构造分数 julia> 1 // 2 1//2 julia> - 1 // 2 -1//2 分数会自动进行约分 julia> 2 // 4 1/ ...
- [POJ] Palindrome
Palindrome Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 62102 Accepted: 21643 Desc ...
- 使用java获取自己的机器网卡
package org.ibase4j.core.util; import java.io.BufferedReader;import java.io.IOException;import java. ...
- 第一章 : Android Studio 介绍 [Learn Android Studio 汉化教程]
摘自:http://ask.android-studio.org/?/question/789,为便于学习重新整理.. 本章将引导您完成安装和设置开发环境,然后你就可以跟随本书的例子和课程学习. 首先 ...
- 【Kettle】Java借助Kettle将Excel导入数据
示例功能(仅供测试): 在JAVA项目中,将数据从Excel文件导入数据库中.实现该能有多种方法,而本例则是“不走寻常路”,尝试借助Kettle实现数据导入. 原理: Java中调用存储在Kettle ...
- .net Reactor之限指定设备使用
.net Reactor之license限指定设备使用 上一篇(https://www.cnblogs.com/s313139232/p/9908400.html)中记录了.net Reactor对d ...
- halcon的长度和角度测量
halcon代码: 1: *读取并截取图片 2: dev_close_window() 3: read_image (Image, 'D:/MyFile/halcon/长度和角度测量/图.png') ...
- leetcode746
class Solution { public: int minCostClimbingStairs(vector<int>& cost) { vector<); totol ...
- IOS 后台之长时间任务 beginBackgroundTaskWithExpirationHandler 申请后台十分钟 600秒
10分钟 beginBackgroundTaskWithExpirationHandler,beginBackgroundTaskWithName endBackgroundTask 定义变量 UIB ...