源文件需要经过编译才能生成可执行文件。在 Windows 下进行开发时,只
需要点几个按钮即可编译,集成开发环境 ( 比如 Visual studio) 已经将各种编
译工具的使用封装好了。 Linux 下也有很优秀的集成开发工具,但是更多的时
候是直接使用编译工具;即使使用集成开发工具,也需要掌握一些编译选项。
PC 机上的编译工具链为 gcc 、 ld 、 objcopy 、 objdump 等,它们编译出来
的程序在 x86 平台上运行。要编译出能在 ARM 平台上运行的程序,必须使用交
叉编译工具 xxx-gcc 、 xxx-ld 等 ( 不同版本的编译器的前缀不一样,比如 arm
linux-gcc) ,下面分别介绍。
针对hello.c文件的编译工程
一个 C/C++ 文件要经过预处理 (preprocessing) 、编译 (compilation) 、 汇编(assembly) 和链接 (linking) 等 4 步才能变成可执行文件。
#include <stdio.h>/* 执行命令: ./hello weidongshan * argc = 2* argv[0] = ./hello* argv[1] = weidongshan*/int main(int argc, char **argv)
{if (argc >= 2)printf("Hello, %s!\n", argv[1]);elseprintf("Hello, world!\n");return 0;
}
book@100ask:~/Desktop/dev/04source/01_hello$ gcc -E -o hello.i hello.c
book@100ask:~/Desktop/dev/04source/01_hello$ gcc -S -o hello.i hello.c
book@100ask:~/Desktop/dev/04source/01_hello$ gcc -c -o hello.o hello.s
book@100ask:~/Desktop/dev/04source/01_hello$ gcc -o hello hello.o
编译多个文件
gcc -o build a.c b.c
整个系统编译非常多的文件,修改1个文件不应该全部进行一片
gcc -o update.o update.c
gcc -o object xxx.o xxx.o.....