一个C/C++文件要经过预处理、编译、汇编和连接等4步才能变成可执行文件:
(1)以#开头的命令被统称为预处理,比如“#include”,宏定义命令“#define”和条件编译命令“#if”和 “#ifdef”等,经过预处理后的代码将输出到一个“.i”文件中去,预处理使用arm-Linux-cpp工具; (2)编译就是将“.i”代码“翻译”成汇编代码,即.s文件; (3)汇编就是将汇编代码“翻译”成一定格式的机器语代码,即.o文件,汇编使用arm-linux-as工具;例如:现在有main.c,sub.h以及sub.c三个文件。
file:main.c
#include <stdio.h>#include "sub.h"int main(int argc, char *argv[]){ int i; printf("Main fun!\n"); sub_fun(); return 0;}file:sub.h
void sub_fun(void);file:sub.c
void sub_fun(void){ printf("sub fun!\n");}现在在终端下进行编译:
(1) gcc -c -o main.o main.c(2) gcc -c -o sub.o sub.c(3) gcc -o test main.o sub.o使用./test命令后,其打印结果为:
Main fun! sub fun!如果在编译过程中出现警告,可以使用 gcc -w来忽略警告。