gcc的安装
CentOS 版本的可直接运行指令 yum install gcc
gcc基本使用
GNU cc(通常称为gcc)是GNU羡项目的编译器,它能够编译C、C++语言编写程序。
gcc是区分拓展名的,.c文件,gcc就会用c语言的规范去编译,.cpp的文件,gcc就会用c++语言的规范去编译。
-
使用gcc
使用gcc,程序员可以对编译过程有更多的控制,编译过程分为3个阶段。
— 预处理
— 汇编
— 链接
-
gcc的编译和运行
首先,创建一个Hello.c文件
在命令行中键入命令编译这段程序:
gcc Hello.c
gcc在不加任何参数编译的时候,生成的可执行程序名字叫a.out
gcc -o Hello Hello.c
这行命令告诉gcc对源程序Hello.c进行编译和链接,并使用参数-o指定创建名为Hello的可执行程序。整个过程是分步进行的,即预编译源代码》》编译目标代码》》链接程序
(注意:Linux下的可执行程序的拓展名不是.exe,且很多情况下不需要扩展名)
在命令行中键入命令运行这段程序:
在当前文件目录下,运行可执行文件用 ./Hello
图例如下:
-
预编译
-E 代表预编译
gcc -o Hello01.c -E Hello.c
表示:预编译Hello.c生成一个Hello01.c文件
预编译就是把#include包含的头文件内容替换到.c或者.cpp文件中;将#define中的宏替换到.c或者.cpp文件中
-
编译
-c代表编译
gcc -o Hello.o -c Hello01.c
表示:编译Hello.c,但不链接,编译输出到Hello.o文件中
-
链接
-命令(没有参数代表链接)
gcc -o hello hello.o
表示:链接源程序Hello.o,生成可执行程序Hello
ldd命令的使用:ldd 可执行程序名称可查看程序调用了什么库
-
运行事项
-
如何让Linux在当前目录下寻找可执行程序:
1、回到宿主目录(直接敲cd命令可回到用户宿主目录)
2、打开宿主目录下的用户配置文件 “.bash_profile” 在PATH后面追加":.",保存.bash_profile,退出
3、让修改的配置文件立即生效 . .bash_profile注意两点之间有空格
gcc常用选项
参数 | 含义 |
---|---|
-o filename | 输出文件名,如果没有指定filename,默认为a.out |
-c | 只编译不链接 |
-E | 预编译 |
-g | 包含调试信息 |
-l | 链接指定的库文件 |
-O | 优化编译后的代码 |
-w | 关闭所有警告信息 |
-Wall | 开启所有警告信息 |
一般编译代码的时候一般加 -Wall参数
想了解gcc的所有选项,可以用man gcc
- gcc 编译初语言和c++的区别
对于c语言和c++语言,gcc编译完的目标代码是不同的,最大的区别在于c++会修改编译后的变量以及函数各种标号的名称。
nm命令的用法:
nm 可执行程序名称(查看可执行内部的标号,函数名等信息)
gcc默认路径c的标准库,并不链接c++标准库
如果要链接c++程序,需要加上参数-lstdc++
如果编译c语言文件,使用gcc; 如果编译c++语言文件,使用g++;g++是gcc的c++编译器