网站建设备案多长时间,精通网站建设工资多少钱,网站排名需要多长时间,怎样创建一个网站平台1.gcc概述
GCC全称是GUN C Compiler
随着时代的发展GCC支持的语言越来越多#xff0c;它的名称变成了GNU Compiler Collection
gcc的作用相当于翻译官#xff0c;把程序设计语言翻译成计算机能理解的机器语言。
#xff08;1#xff09;gcc -o
gcc -o #xff08;其…1.gcc概述
GCC全称是GUN C Compiler
随着时代的发展GCC支持的语言越来越多它的名称变成了GNU Compiler Collection
gcc的作用相当于翻译官把程序设计语言翻译成计算机能理解的机器语言。
1gcc -o
gcc -o 其中o相当于output gcc -o 输出的文件名 输入文件名 -o后面一定首先加入的是output file
例子
gcc -o build helloworld.c
//通过gcc将helloworld.c文件生成新的执行文件build
//在Linux中build不需要加后缀在Windows中需要加后缀build.exe2gcc -v gcc -v 显示编译阶段的命令 例子
gcc -v -o build helloworld.c
//通过-v命令我们可以发现gcc通过调用很多翻译官把helloworld.c翻译为build
2.C语言编译过程介绍
1预处理 cpp -o a.i 08.c 【gcc -E】对源文件进行预处理
预处理编译器将C语言的头文件编译进来还有宏的替换。头文件#include宏定义#define
2编译 /usr/lib/gcc/aarch64-linux-gnu/9/cc1 -o ccgaeAEA.s 08.c cc1将08.c文件翻译成ccgaeAEA.s文件 cc1又称为编译器
【gcc -S】 就相当于间接调用/usr/lib/gcc/aarch64-linux-gnu/9/cc1
3汇编 as -o cclL6PC.o ccgaeAEA.s as将ccgaeAEA.s文件翻译成cclL6PC.o文件
【gcc -c】 相当于间接调用as当然也是先间接调用cc1将.c文件翻译为.s文件再调用的as
4链接 /usr/lib/gcc/aarch64-linux-gnu/9/collect2 -o build cclL6PC.o和其他.o文件 【gcc -o】 相当于 /usr/lib/gcc/aarch64-linux-gnu/9/collect2
gcc -o build 08.c就相当于先调用了gcc -S和gcc -c最后再调用gcc -o。也就是gcc -o可以直接完成编译和汇编这两个过程。
总结后缀为.s的文件里面的内容是汇编语言。后缀为.o文件的文件里面是机器语言二进制语言。
3.C语言编译常见的错误举例
1预处理错误
#include name 在当前目录下去寻找name一般用于自定义的
#include name在系统环境变量中去寻找name一般是系统库的
常见错误就是not find 找不到文件
解决方案 gcc -I 后面跟查找头文件的目录是i大写I 2编译错误
1.语法错误
2.链接错误1原材料不够 undefined refernce to fun 寻找标签是否实现了链接时是否加入了链接
2多了 multiple definition of fun 多次实现了标签就是原本的.c文件里fun函数完整了但是又引入了一个外部的.c文件里面的fun函数 最终只保留一个标签实现。
例子 出现了 undefined refernce to fun就是因为fun函数不完整。 解决方法一 去掉void fun(void)的然后添加{ } 解决方法二 新建一个.c文件 然后完善函数fun 最后在编译的时候吧含有完整fun函数的.c文件写在后面就可以了 最好的写法是将两个.c文件都编译成.o文件 最后编译.o文件 4.C语言预处理介绍
1.#include 包含头文件include不是关键字
2.#define 宏替换编写时不进行语法检查所以在编译时有时候会出错
例子 #define 宏名 宏体 #define ABC 53 printf(the %d\n,ABC*5) //53*551520 #define ABC {53} //最好加上{} 宏函数 #define ABC(x) 5(x) 3.条件编译
#ifdef #else #endif
4.预定义宏
系统预定好的编译器预定的。(前后都是两根下划线)
__FUNCTION__ 函数名
__LINE__行号
__FILE__文件名
例子 修改一下