安装gcc g++
sudo apt install gcc g++
查看gcc版本
gcc -v
gcc -version
g++ -v
g++ -version
xshell快捷键:ctrl+L清空命令行
编译测试
在/home/ssp/Linux/lession02
目录下创建一个test.c文件
touch test.c
使用vs code远程连接到Ubuntu,写c代码更方便
#include <stdio.h>
int main(){
printf("Hello World");
return 0;
}
编译命令:
gcc test.c -o app
运行程序,直接在当前目录下./app
如果不加-o
会生成一个默认的a.out
运行./a.out
也可以成功执行代码
编程语言的发展
GCC工作流程
1)、预处理
引入头文件代码,删掉注释,宏替换
gcc test.c -E -o test.i
2)、【编译器】编译成汇编代码
gcc test.c -S -o test.s
如图为编译后的汇编代码
3)、【汇编器】汇编
汇编成目标代码
gcc test.s -c -o test.o
4)、【链接器】链接
生成可执行程序.out/.exe
./test.o
【纠错】输入的参数 -s 是错误的(没有 -s 参数,只有 -S 参数,手误),应该是 -c 参数。-c 生成目标代码 test.o,test.o 不是一个可执行程序。如果下一步需要继续链接成可执行程序,需要输入指令 gcc test.o -o test.out(这里直接将 .o 目标文件链接成可执行程序 test.out,可以有多个 .o 文件,这里只有一个)
自动执行预处理+汇编+链接
gcc test.c
04. gcc g++
gcc编译C程序,g++编译C++程序(也可以编译C程序
05 gcc参数选项
xftp的使用:上传到文件服务器
-D指定一个宏
意义:方便调试,发布的时候不需要输出宏的地方
gcc test.c -o test -DDEBUG # -D和DEBUG可以不分开
test.cpp
#include <stdio.h>
#define DEBUG
//-D相当于在程序里定义了一个宏
int main()
{
int a = 10;
#ifdef DEBUG
printf("我是一个程序猿, 我不会爬树...\n");
#endif
for(int i=0; i<3; ++i)
{
printf("hello, GCC!!!\n");
}
int b, c, d, f;
b = 10;
c = b;
d = c;
f = d;
//程序优化,防止反汇编,看不出程序原来的逻辑,还有性能内存方面的优化
/*
int b,c,d,f;
b = 10;
c = 10;
d = 10;
f = 10;
*/
return 0;
}
-Wall 输出警告信息
gcc test.c -o test -Wall
-std
c89:变量都要放在前面
c99:可以放在后面