主要内容 #
- g++简介
- 命令格式
- 命令选项
1. g++简介 #
g++是GNU开发的C++编译器,是GCC(GNU Compiler Collection)GNU编译器套件的组成部分。另外,gcc是GNU的C编译器。
g++编译器是GCC的一部分,GCC编译工作一般分为四个步骤:
(1)预处理(Preprocessing)。由预处理器cpp完成,将.cpp源文件预处理为.i文件。
g++ -E test.cpp -o test.i //生成预处理后的.i文件
(2)编译(Compilation)。将.i文件编译为.s的汇编文件。使用-S选项,只进行编译而不进行汇编,生成汇编代码。
g++ -S test.i -o test.s //生成汇编.s文件
(3)汇编(Assembly)。由汇编器as完成,将.s文件汇编成.o的二进制目标文件。
g++ -c test.s -o test.o //生成二进制.o文件
(4)链接(Linking)。由链接器ld,将.o文件连接生成可执行程序。
g++ test.o -o test.out //生成二进制.out可执行文件
2. 命令格式 #
g++ [选项] 准备编译的文件 [选项] [目标文件]
编译单个源文件
g++ test.cpp -o test
test.cpp为需要编译的源文件,test为输出的可执行目录。
g++ testspeaker.cpp speaker.cpp -o testspeaker
testspeaker.cpp speaker.cpp 需要编译的2个源文件。
3. 命令格式 #
关于g++的命令选项,大家可以参考g++百度百科或者GCC官方手册,或者使用man g++单独查看g++使用手册。
下面列出常用的命令选项。
(1)总体选项:
-E 只激活预处理,这个不生成文件,你需要把它重定向到一个输出文件里面。例子用法: gcc -E hello.c > pianoapan.txt gcc -E hello.c | more 慢慢看吧,一句`hello word`也要预处理成800行的代码。 -S 只激活预处理和编译,就是指把文件编译成为汇编代码。例子用法: gcc -S hello.c 将生成.s的汇编代码,可以用文本编辑器查看。 -c 只激活预处理,编译,和汇编,也就是他只把程序做成obj文件。例子用法: gcc -c hello.c 将生成.o的目标文件(object file)。 -o 指定目标名称,缺省的时候,gcc/g++编译出来的文件是a.out。例子如下: g++ -o hello.out hello.cpp g++ -o hello.asm -S hello.cpp
(2)目录选项:
-I[dir] 在你是用#include "file"的时候,gcc/g++会先在当前目录查找你所指定的头文件,如果没有找到,会到系统默认的头文件目录找。如果使用-I指定了目录,编译器会先在指定的目录查找,然后再去系统默认头文件目录查找。对于#include <file>,gcc/g++会到-I指定的目录查找,查找不到,然后再到系统默认的头文件目录查找。 -include [file] 相当于“#include”,用于包含某个代码,简单来说,就是编译某个文件,需要另一个文件的时候,就可以 用它设定,功能就相当于在代码中使用#include。例子用法: gcc hello.c -include /root/pianopan.h -I- 就是取消前一个参数的功能,所以一般在-Idir之后使用 -idirafter [dir] 在-I的目录里面查找失败,将到目录dir里面查找。 -iprefix [prefix],-iwithprefix [dir] 一般一起使用,当-I的目录查找失败,会到prefix+dir下查找。 -L[dir] 编译的时候,指定搜索库的路径。比如你自己的库,可以用它指定目录,不然编译器将只在标准库的 目录找。这个dir就是目录的名称。 -l[library] 指定编译的时使用的库,例子用法 gcc -lcurses hello.c 使用curses库编译连接,生成程序。 </file>