在linux下如何编译C++程序

概述

GCC,GNU Compiler Collection是linux下最主要的编译工具GCC不仅功能非常强大结构也异常灵活。它可以通过不同的前端模块来支持各种语言如Java、Fortran、Pascal、Modula-3和Ada。g++是GCC中的一个工具专门来编译C++语言的。
GCC的参数有( 也是分步实现)
  -E  让GCC在预处理结束后停止编译 

   g++ -E hello.cpp  -o  hello.i
  -c  将hello.i编译成目标代码

   g++  -c  hello.i  -o  hello.o
  将目标文件连接成可执行文件

   g++ hell.o   -o   hello
  可以一步实现  

   g++  hello.cpp  -o  hello
假如有两个以上源文件应该一下编译。
  一步就实现

   g++   foo1.cpp   foo2.cpp   -o   foo
  也可以分步实现  
   g++   -c   foo1.cpp  -o   foo1.o
   g++   -c    foo2.cpp  -o   foo2.o
   g++   foo1.o  foo2.o    -o    foo

GCC一些常用选项
  1、产生警告信息的选项大多数以-W开头  其中有-Wall
  g++  -Wall  hello.cpp   -o   hello
  2、将所有的警告当成错误的选项-Werror
  g++ -Werror  hello.cpp  -o  hello
  3、寻找头文件选项 -I,linux默认路径头文件在/usr/include/下,如果不在这个路径下就要用-I指定。
  gcc  foo.cpp  -I /home/include   -o  foo
  4、 库依赖选项 -L,linux默认路径库文件在/usr/lib/下不在这个路径下就要用-L指定。
  g++  foo.cpp  -L /home/lib  -l foo  -o   foo
  库就是将源文件编译之后生成的目标文件的集合。库命名以lib开头。
  库有静态库,通常以.a结尾,和动态库通常以.so结尾
  默认情况下g++以动态库形式连接。如果要静态库连接则要用-static指定

  g++ foo.cpp  -L /home/lib  -static  -l foo  -o  foo
优化选项  -O n  n取0到3之间
编译成静态库GNU 二进制链工具
ar命令可以用来编译成静态库
ar  [-] {操作选项} {任选项} [成员名] [count] archive files....
ar r v  libtest.a  hello.o  hello1.o 

生成一个库名为libtest 该库中存放了hello.o和hello1.o这两个模块。
操作项d(删除)、  m(移动)、p(标准输出)、q(快速追加)、r(在库中插入模块)、t(显示库的模块清单)、x(从库中提取一个成员)。
任选项:a(成员后面添加一个新文件)、b(成员前面添加一个新文件)、c(创建一个库)、f(截短指定名字)、v(显示执行操作选项的附加信息)。

参考至:http://wenku.baidu.com/link?url=-_qQQOqybriLc7lIdEDEFhp7IKdu3lPHbsx6OesdJqnqY_qgmsW3wRJbcxxPWwP6v1KPy68OWyruZCWa9Y0q1Fq8aqdiS1BB9NLKGClOH2q

如有错误,欢迎指正

邮箱:[email protected]

猜你喜欢

转载自czmmiao.iteye.com/blog/2327301