【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 ...
随机推荐
- win系统主机上的虚拟机NAT模式可修改3389端口做远程登录
当你只有一个公网IP的时候,那么这个IP基本上是要分给物理主机的,那么本机的虚拟机就只能选NAT网络模式了,那么想在外网直接远程虚拟机的话,修改虚拟机的远程登录端口(不修改也可以,主要是主机的3389 ...
- 初识python(python的安装与运行)
python--“优雅”.“明确”.“简单”的哲学定位 一.python的安装(Windows环境下) 1.在python官网下载安装文件 python的官方网址:https://www.python ...
- nginx作用
图解nginx作用:
- Rpm打包程序
1.Rpm打包程序1.1为什么要使用rpm打包1.编译安装软件,优点是可以定制化安装目录.按需开启功能等,缺点是需要查找并实验出适合的编译参数,诸如MySQL之类的软件编译耗时过长.2.yum安装软件 ...
- 如何查找EI 及SCI 索引
1.EI https://www.engineeringvillage.com/search/quick.url 搜题目,然后点击搜索,然后点击细节(detailed) Accession numbe ...
- nginx root与alias区别
引用于文章https://blog.csdn.net/line_aijava/article/details/71473793 root: Sets the root directory for re ...
- 使用tcmalloc编译出现undefined reference to `sem_init'
tcmalloc是Google开源的一个内存管理库, 作为glibc malloc的替代品,效率大概是gclibc malloc的几倍.想在工程中用上tcmalloc非常的简单,我们采用了静态编译的方 ...
- centos7 端口开放
CentOS升级到7之后,发现无法使用iptables控制Linuxs的端口,google之后发现Centos 7使用firewalld代替了原来的iptables.下面记录如何使用firewalld ...
- CSS隐藏元素 display visibility opacity的区别
{ display: none; /* 不占据空间,无法点击 */ } { visibility: hidden; /* 占据空间,无法点击 */ } { position: absolute; ...
- solr的简单部署:在tomcat中启动slor
1,首先要下载solr 途径1: 官网网址: http://lucene.apache.org/ 与Lucene的官网是一个 途径2: 下载历史版本的网址: http://archive.apache ...