gcc的安装和使用(ubuntu)

介绍

gcc(GNU Compiler Collection,GNU编译器套件)是由GNU开发的编程语言编译器。GNU编译器套件包括C、C++Objective-CFortranJavaAdaGo语言前端,也包括了这些语言的库(如libstdc++,libgcj等。)。

gcc编译器能将C、C++语言源程序、汇程式化序和目标程序编译、连接成可执行文件,如果没有给出可执行文件的名字,gcc将默认生成一个a.out文件。在Linux系统中,可执行文件没有统一的后缀,系统从文件的属性来区分可执行文件和不可执行文件。

编译过程

GCC 的编译过程可以划分为四个阶段:预处理、编译、汇编以及链接。如下图所示。
在这里插入图片描述

安装

更新软件包

sudo apt update

在这里插入图片描述

更新完成后使用以下命令安装gcc

sudo apt-get install gcc

在这里插入图片描述

查看版本号,若版本号正常显示则说明安装成功。

gcc --version

在这里插入图片描述

基本使用方法

后缀名文件说明

后缀名文件说明
.cc源文件
.cppc++源文件
.hc/c++头文件
.i预处理后的c/c++文件
.s汇编源文件
.o目标文件
.lib静态库
.dll动态库

gcc语法

gcc [options] file...

gcc常用选项

选项描述
-E仅预处理,不要编译、汇编或链接
-S仅编译,不要汇编和链接
-c编译和汇编,但不要链接
-o指定输出文件
-pie创建一个动态链接、位置无关的可执行文件
-I指定头文件的包含路径
-L指定链接库的包含路径
-shared创建共享库/动态库
-static使用静态链接

gcc编译简单示例

lgs@lgs-virtual-machine:~/Desktop/study/c_pro/hello$ vim hello.c 
#include"stdio.h"
void main()
{
    printf("hello world!\n");
    return;
}
####编译hello.c,默认生成a.out
lgs@lgs-virtual-machine:~/Desktop/study/c_pro/hello$ gcc hello.c 
lgs@lgs-virtual-machine:~/Desktop/study/c_pro/hello$ ls
a.out  hello.c
lgs@lgs-virtual-machine:~/Desktop/study/c_pro/hello$ ./a.out 
hello world!
####编译hello.c,使用-o选项指定输出hello
lgs@lgs-virtual-machine:~/Desktop/study/c_pro/hello$ gcc -o hello hello.c 
lgs@lgs-virtual-machine:~/Desktop/study/c_pro/hello$ ls
a.out  hello  hello.c
lgs@lgs-virtual-machine:~/Desktop/study/c_pro/hello$ ./hello
hello world!

gcc编译过程的理解

####预处理,输出hello.i源文件
lgs@lgs-virtual-machine:~/Desktop/study/c_pro/hello$ gcc -E -o hello.i hello.c 
lgs@lgs-virtual-machine:~/Desktop/study/c_pro/hello$ ls
hello.c  hello.i
####编译,通过hello.i文件生成hello.s汇编文件
lgs@lgs-virtual-machine:~/Desktop/study/c_pro/hello$ gcc -S -o hello.s hello.i
lgs@lgs-virtual-machine:~/Desktop/study/c_pro/hello$ ls
hello.c  hello.i  hello.s
####汇编,通过hello.s文件生成hello.o目标文件
lgs@lgs-virtual-machine:~/Desktop/study/c_pro/hello$ gcc -c -o hello.o hello.s
lgs@lgs-virtual-machine:~/Desktop/study/c_pro/hello$ ls
hello.c  hello.i  hello.o  hello.s
####链接,通过hello.o文件链接成hello可执行文件
lgs@lgs-virtual-machine:~/Desktop/study/c_pro/hello$ ls
hello  hello.c  hello.i  hello.o  hello.s
lgs@lgs-virtual-machine:~/Desktop/study/c_pro/hello$ ./hello
hello world!
  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值