1 -g 编绎带调试信息的可执行文件

  1. # g++ 产生能被 GNU 调试器GDB使用的调试信息,以调试程序。
  2. # 产生带调试信息的可执行文件test
  3. g++ -g test.cpp -o test

2 -o 优化源代码

  1. # -O 同时减小代码的长度和执行时间,其效果等价于-O1
  2. # -O0 表示不做优化
  3. # -O1 为默认优化
  4. # -O2 除了完成-O1的优化之外,还进行一些额外的调整工作,如指令调整等。
  5. # -O3 则包括循环展开和其他一些与处理特性相关的优化工作。
  6. # 选项将使编译的速度比使用 -O 时慢, 但通常产生的代码执行速度会更快。
  7. g++ test.cpp -o2 test

3 -l 指定库文件 (小写的L)

这里指的库 包括 静态库 和 动态库

  1. # -l参数(小写)就是用来指定程序要链接的库,-l参数紧接着就是库名
  2. # 在 /lib 和 /usr/lib 和 /usr/local/lib 里的库直接用-l参数就能链接
  3. g++ -l glog test.cpp // 链接glog库

4 -L 指定库文件路径

这里指的库 包括 静态库 和 动态库

  1. # 如果库文件没放在上面三个目录里,需要使用-L参数(大写)指定库文件所在目录
  2. # -L参数跟着的是库文件所在的目录名
  3. # 链接mytest库,libmytest.so在/home/bing/mytestlibfolder目录下
  4. g++ -L/home/bing/mytestlibfolder -lmytest test.cpp

5 -I 指定头文件搜索目录

  1. # /usr/include目录一般是不用指定的,gcc知道去那里找,
  2. # 但是如果头文件不在/usr/icnclude里我们就要用-I参数指定了
  3. # 比如头文件放在/myinclude目录里,那编译命令行就要加上-I/myinclude 参数了,
  4. # 如果不加你会得到一个”xxxx.h: No such file or directory”的错误。
  5. # -I参数可以用相对路径,比如头文件在当前 目录,可以用-I.来指定。
  6. g++ -I /myinclude test.cpp

image.png
image.png

6 -Wall 打印警告信息

  1. g++ -Wall test.cpp

7 -w 关闭警告信息

  1. g++ -w test.cpp

8 std=c++11 设置编绎标准

  1. g++ -std=c++11 test.cpp

9 -o 指定输出文件名

  1. # 不加-o 指定输出名, 则默认输出为a.out
  2. g++ test.cpp -o2 test

10 -D 定义宏

  1. g++ -DDEBUG test.cpp