简介
编译命令格式:
gcc [options] file… g++ [options] file…
- 命令、选项和源文件之间使用空格分隔
- 一行命令中可以有零个、一个或多个选项
- 文件名可以包含文件的绝对路径,也可以使用相对路径
- 如果命令中不包含输出可执行文件的文件名,可执行文件的文件名会自动生成一个默认名,Linux平台为a.out,Windows平台为a.exe
gcc工作流程和常用选项
gcc编译器从拿到一个c源文件到生成一个可执行程序,中间一共经历了四个步骤:
四个步骤并不是gcc独立完成的,而是在内部调用了其他工具,从而完成了整个工作流程:
gcc工作的流程
$ ls 1hello.c 第一步: 进行预处理 $ gcc -E 1hello.c -o 1hello.i 第二步: 生成汇编文件 $ gcc -S 1hello.i -o 1hello.s 第三步: 生成目标代码 $ gcc -c 1hello.s -o 1hello.o 第四步: 生成可以执行文件 $ gcc 1hello.o -o 1hello 第五步: 执行 $ ./1hello
直接将源文件生成一个可以执行文件
$ gcc 1hello.c -o 1hello $ ./1hello
如果不指定输出文件名字, gcc编译器会生成一个默认的可以执行a.out
$ gcc 1hello.c $ ls 1hello 1hello.c 1hello.i 1hello.o 1hello.s a.out $ ./a.out
gcc常用选项
| 选项 | 作用 |
|---|---|
| -o file | 指定生成的输出文件名为file |
| -E | 只进行预处理 |
| -S(大写) | 只进行预处理和编译 |
| -c(小写) | 只进行预处理、编译和汇编 |
| -v / —version | 查看gcc版本号 |
| -g | 包含调试信息 |
| -On n=0~3 | 编译优化,n越大优化得越多 |
| -Wall | 提示更多警告信息 |
| -D | 编译时定义宏 |
显示所有的警告信息
gcc -Wall test.c
将警告信息当做错误处理
gcc -Wall -Werror test.c
