语言分为编译型语言和解释型语言。
编译型语言:
需要通过编译器,将一种语言(一般是高级语言)转换成另一种语言(一般是低级语言),用来给计算机识别
优点:编译成功后,每次运行不需要重新编译,执行效率高。
缺点:依赖于编译器,跨平台时需要有编译器的支持,可移植性较差。(如:C,C++等)
解释型语言:
不需要编译器编译,在执行的时候直接由解释器逐行解释执行。
优点:不依赖于编译器,可移植性较强;
缺点:每次执行都需要解释器逐行解释,运行效率较低。(如:shell python)
编译方式
方式一:gcc hello.c 将hello.c进行编译,默认生成a.out可执行文件./a.out 可以执行a.out文件
方式二:gcc hello.c -o diy.exe 将hello.c进行编译,生成自定义名字的可执行文件./diy.exe可以执行diy.exe文件
方式三:根据编译流程分步编译。
预处理:宏定义的替换和头文件的展开
gcc -E hello.c -o hello.i
编译:做语法和词法分析(查错),如果语法词法都没错,生成汇编文件
gcc -S hello.i -o hello.s
汇编:将汇编文件生成二进制文件,用来给计算机识别
gcc -c hello.s -o hello.o
链接:链接库文件(函数的定义),最终生成可执行的a.out文件
gcc hello.o -o a.out*