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

在linux下如何编译C++程序,布布扣,bubuko.com

时间: 2024-12-23 15:59:41

在linux下如何编译C++程序的相关文章

Linux下静态编译Qt程序

一般情况下,我们用Qt编译出来的程序是要依赖于系统Qt库的,也就是这个程序移到别的没有安装Qt库的系统上是不能使用的.会提示缺少……库文件之类的错误.这就是动态编译的结果. 但是如果我们想编译一个程序,这个程序在发给别人后,他们可以直接打开,而不需要特别地去先安装Qt库,那就需要采用静态编译了. 在Linux下如何静态编译Qt程序呢? 首先需要先安装静态编译的Qt,也就是静态编译Qt程序首先是需要一个静态编译安装的Qt   1.下载源安装程序,如 qt-x11-opensource-src-4.

FFmpeg在Linux下安装编译过程

转载请把头部出处链接和尾部二维码一起转载,本文出自:http://blog.csdn.net/hejjunlin/article/details/52402759 今天介绍下FFmpeg在Linux下安装编译过程,用的是CentOS, 总体过程比较顺利,就是在ffmpeg等的时间稍长点.没什么技术难点.仅当记录. 关于FFmpeg FFmpeg是一个开源免费跨平台的视频和音频流方案,属于自由软件,采用LGPL或GPL许可证(依据你选择的组件).它提供了录制.转换以及流化音视频的完整解决方案.它包

Linux下nginx编译安装教程和编译参数详解

这篇文章主要介绍了Linux下nginx编译安装教程和编译参数详解,需要的朋友可以参考下 一.必要软件准备1.安装pcre 为了支持rewrite功能,我们需要安装pcre 复制代码代码如下: # yum install pcre* //如过你已经装了,请跳过这一步 2.安装openssl 需要ssl的支持,如果不需要ssl支持,请跳过这一步 复制代码代码如下: # yum install openssl* 3.gzip 类库安装 复制代码代码如下: yum install zlib zlib-

Linux 下查看某一个程序所使用的内存方法介绍

Linux 下查看某一个程序所使用的内存方法介绍 在 Linux 上进行开发和运营维护的时候,免不了要查看某一个程序所占用内存的情况.常用方法总结如下(注意第四种方法): 第一种:ps -aux | grep process_name 举例如下:现打算监控/usr/bin/sshd所占的内存,首先需找到pid,然后使用top进行有目标的监控,RES即为内存值,见下两图: top -p 1231,截图如下:    第二种:top -p pid 查看程序的情况 如上图所示! 第三种:cat /pro

linux 下手动编译安装无线网卡驱动

//先参照 <本地yum源安装GCC >安装好gcc hp的笔记本上安装了CentOS6.3,没有安装无线网卡驱动,安装这个驱动,在Google上找了好多资料,最后终于解决了这个问题.在这里做点记录,希望也能帮到别人. 我的机子是32位,CentOS的内核版本是2.6.32-279.19.1.el6.i686,下载的无线网卡驱动是hybrid-portsrc_x86_32-v5_100_82_112.tar.gz 下面是具体的步骤 一:确定无线网卡的型号,驱动下载 第一步要确定机子的无线网卡型

LINUX下如何编译MYSQL源代码

LINUX下如何编译MYSQL源代码 Linux下面编译MYSQL的源代码方式如下: 首先下载源代码:选择下面这个版本: 下载相应的CMake, gcc, bison等所依赖组件: a) 安装cursor library: b) 安装gcc 和 gcc-c++ c) 下载boost:  用g++ 或者根据不同的参数,指定参数,然后运行CMAKE: cmake \ -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ -DMYSQL_DATADIR=/usr/loca

Linux下部署Java应用程序

Linux软件安装的特点: 1.Linux中没有注册表的概念,因此要想删除某个软件直接删除软件目录就可以了. 2.软件的安装有些需要Linux软件包的支持,在Linux中使用rpm命令管理软件包. 3.Linux中软件安装的过程很迅速,并且软件的运行速度也很快. 4.Linux中权限管理很严格,因此安装时需要对安装介质进行权限配置. 体验Linux下的Java开发 编译器->字节码->(虚拟机)本地机器码->执行 Linux系统与Windows系统最大的区别: Windows路径分隔是&

linux 下安装编译配置 QT

打算做嵌入式图像处理,计划方案嵌入式Linux+OpenCV+QT,昨天简单入门OpenCV今天看看QT,QT就先弄Linux下面的,回家之前争取把基本的摸通,然后能在板子上跑起来. 软件环境 Linux:Ubuntu 12.04 X86 QT:4.8.4 关于QT安装 QT的早期版本和现在版本有点变化,提供的文件也不尽相同,最新的版本为5.0,我这里用的是4.8.4,一个完整的QT应该包括QT库.IDE也就是QT creator,在Linux下的安装中,目前看到的主要有三种方法: 1..bin

linux下cmake编译C++工程之总结篇

昨天正式把项目编译完成,经历了一周的摸索和折磨后,最后也想:oh,it's so easy! 但是过程确实困难的,因为cmake官方只有API的解释,而且解释的不是很清楚. 一般项目都是狠复杂的层级关系 这种如何来写cmake呢? 首先要知道一个很重要的东西,cmake是一定要从顶级目录开始,才能继承目录,比如直接在project1目录里用../lib是无效的,因为cmake并不知道: 而如果在project下建立cmakelists.txt 然后add_subdir(project1),pro