linux下编译C++程序

一些常识问题:

常识一:更新ubuntu系统:

#sudo apt-get update 获得最近的软件包的列表;列表中包含一些包的信息,比如这个包是否更新过

#sudo apt-get dist-upgrade 如果这个包没有发布更新,就不管它;如果发布了更新,就把包下载到电脑上,并安装。

apt-get update 指令会同步使用者端和APT 伺服器的RPM 索引清单(package list),APT 伺服器的RPM 索引清单置于base 资料夹内,使用者端电脑取得base 资料夹内的bz2 RPM 索引清单压缩档后,会将其解压置放于/var/state/apt/lists/,而使用者使用apt-get install 或apt-get dist-upgrade 指令的时候,就会将这个资料夹内的资料和使用者端电脑内的RPM 资料库比对,如此一来就可以知道那些RPM 已安装、未安装、或是可以升级的。


二、安装g++(g++是GCC中的一个工具,专门来编译C++语言的
sudo apt-get install build-essential
sudo apt-get update
sudo apt-get install g++


编译步骤如下:

             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  -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


以上内容转自:

                         http://blog.csdn.net/nashouat/article/details/8331190

                         http://blog.163.com/dawnsword@126/blog/static/162805915201032304555891/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值