用g++编译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
  • -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  -lfoo  -o   foo

           库就是将源文件编译之后生成的目标文件的集合。 库命名以lib开头。库有静态库(通常以.a结尾)和动态库(通常以.so结尾)。默认情况下,g++以动态库形式连接。如果要静态库连接则要用-static指定
            (g++ foo.cpp  -L/home/lib  -static  -lfoo  -o  foo)

      5、优化选项  -On  (n取0到3之间)

四、介绍一些GNU 二进制链工具

1、ar命令(也称为工具) 可以用来编译成静态库

ar [-] {操作选项} {任选项} [成员名] [count] archive files….

ar r v libtest.a hello.o hello1.o 生成一个库名为test,该库中存放了hello.o和hello1.o这两个模块。

操作项:d (删除)、 m(移动)、p(标准输出)、q(快速追加)、r(在库中插入模块)、t(显示库的模块清单)、x(从库中提取一个成员)。

任选项:a(成员后面添加一个新文件)、b(成员前面添加一个新文件)、c(创建一个库)、f(截短指定名字)、v(显示执行操作选项的附加信息)。

2、编译成动态库

分步完成:
gcc -fPIC -c func.cpp -o func.o
gcc -shared -o libfunc.so func.o

一步就完成:gcc -fPIC -shared -o libfunc.so func.cpp

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值