GCC深入一点
说明
简单,但清晰的GCC深入教程。
更多的GCC编译器选项
几个常用的gcc编译器选项:
$ g++ -Wall -g -o Hello Hello.cpp
- -o: 指定输出可执行文件名。
- -Wall: 打印所有的警告消息。
- -g: 使用GDB调试器产生额外的符号debuggging信息。
独立编译和链接
上面的命令将源文件编译成目标文件,并在一个步骤中与其他对象文件(系统库)链接成可执行文件。您可以单独进行编译和链接两个步骤,如下:
// 仅编译用 -c
> g++ -c -Wall -g Hello.cpp
// 将目标文件转化为可执行文件
> g++ -g -o Hello.exe Hello.o
对“-c”选项进行解释:
-c: 创建目标文件”Hello.o”。默认情况下,目标文件具有与源文件相同的名称,拓展名为”.o”。
注意链接输入文件是目标文件”.o”(而不是源文件)。GCC使用单独的链接程序(称为ld.exe)进行链接。
编译和链接多个源文件
目前为止,只是对一个源文件进行编译,下面进行多个源文件处理。
假设你的程序有两个源文件:file1.cpp,file2.cpp。你可以在一个命令中编译他们:
> g++ -o myprog.exe file1.cpp file2.cpp
然而,我们通常将每个源文件分别编译成目标文件,并在之后的阶段将它们链接到一起。这样做的好处是:如果其中一个文件更改了,不需要重新编译其他未更改的文件。
> g++ -c file1.cpp
> g++ -c file2.cpp
> g++ -o myprog.exe file1.o file2.o
小结
- 编译和链接一个,或者多个源文件
- g++ -c 和 g++ -o独立进行编译和链接