网站推广具体内容,展厅设计与施工公司,免费纯ftp空间,关于电商运营的知识点1序言 gcc是一个可移植的编译器#xff0c;支持多种硬件平台#xff1b;也不仅仅是一个本地编译器也是一个跨平台编译器#xff1b;支持多张语言编译时按照模块化设计支持多种语言。 gcc编译过程#xff1a;预处理#xff08;预处理器#xff09;#xff1b;编译#x…1序言 gcc是一个可移植的编译器支持多种硬件平台也不仅仅是一个本地编译器也是一个跨平台编译器支持多张语言编译时按照模块化设计支持多种语言。 gcc编译过程预处理预处理器编译编译器汇编汇编器链接链接器 gcc编译简化参数ESc--文件iso 2实践 先建立一个c文件hello.c,并输入如下打印出hello world!; #include stdio.hint main(void)
{printf(hello world!\n);return 0;
}2.1下面来记录一下gcc编译过程 1预处理阶段 gcc -E hello.c -o hello.i //使用-E参数表示编译只到预处理阶段这个阶段生成的文件是后缀为i也可以在-E前面加上-Wall参数显示编译信息以下如此初学者非常有用。2编译阶段 gcc -S hello.i -o hello.s //使用-S参数把预处理阶段生成的文件编译成汇编文件3汇编阶段 gcc -c hello.s -o hello.o //使用-c参数把汇编文件编译生成目标文件这是二进制文件 4链接阶段 gcc hello.o -o hello //目标文件链接生成可执行文件不用参数此阶段会把相关的一些系统静态库动态库文件加入进来生成可执行文件以上4个步骤也可以使用一条命令完成 gcc hello.c -o hello //直接把c源文件编译成可执行文件 2.2gcc多文件编译 上面的例子是针对一个源文件的但是往往我们在开发中是多个文件那这又怎么操作呢下面把上面的代码拆分一下如下 1.建立hello_fn.h文件文件内容如下 #ifndef _HELLO_FN_H
#define _HELLO_FN_H
void print(const char* str);
#endif2.建立hello_fn.c文件内容如下 #include stdio.h
#include hello_fn.hvoid print(const char* str)
{printf(str);
} 3.建立hello_main.c文件内容如下 #include hello_fn.hint main(void)
{print(hello world!\n);return 0;
}下面分步骤生成目标文件在生成可执行文件 gcc -Wall -c hello_fn.c -o hello_fn.o
gcc -Wall -c hello_main.c -o hello_main.o
gcc -Wall hello_fn.o hello_main.o -o hello_main也可以一次性生成可执行文件 gcc -Wall hello_fn.c hello_main.c -o hello_main这样结果是一样第一种方法适合多个目标文件其中一个模块发生变化此时只需要编译改变的模块最后在把所有的目标文件链接成可执行文件现在假如hello_fn.c文件发生变化只需要编译hello_fn.c为目标文件hello_fn.o,最后链接hello_main.o生成可执行文件。 转载于:https://www.cnblogs.com/luoliang/p/3843654.html