单个源文件生成可执行程序

编译器 g++ 通过检查命令行中指定的文件的后缀名可识别其为 C++ 源代码文件。编译器默认的动作:编译源代码文件生成对象文件(object file),链接对象文件和 libstdc++ 库中的函数得到可执行程序。然后删除对象文件。由于命令行中未指定可执行程序的文件名,编译器采用默认的 a.out。程序可以这样来运行:

g++ helloworld.cpp

./a.out

通过-o选项指定可执行程序文件名

g++ helloworld.cpp -o helloworld

./helloworld.

程序 g++ 是将 gcc 默认语言设为 C++ 的一个特殊的版本,链接时它自动使用 C++ 标准库而不用 C 标准库。通过遵循源码的命名规范并指定对应库的名字,用 gcc 来编译链接 C++ 程序是可行的,如下例所示:

gcc helloworld,cpp -lstdc++ -o helloworld

选项 -l (ell) 通过添加前缀 lib 和后缀 .a 将跟随它的名字变换为库的名字 libstdc++.a。而后它在标准库路径中查找该库。gcc 的编译过程和输出文件与 g++ 是完全相同的。

在大多数系统中,GCC 安装时会安装一名为 c++ 的程序。如果被安装,它和 g++ 是等同,如下例所示,用法也一致:

c++ helloworld.cpp -o helloworld

多个源文件生成可执行程序

/* speak.h */

#include

class Speak

{

public:

void sayHello(const char *);

};

/* speak.cpp */

#include "speak.h"

void Speak::sayHello(const char *str)

{

std::cout << "Hello " << str << "\n";

}

/* hellospeak.cpp */

#include "speak.h"

int main(int argc,char *argv[])

{

Speak speak;

speak.sayHello("world");

return(0);

}

g++ hellospeak.cpp speak.cpp -o hellospeak

PS:这里说一下为什么在命令中没有提到“speak.h“该文件(原因是:在“speak.cpp“中包含有”#include”speak.h”“这句代码,它的意思是搜索系统头文件目录之前将先在当前目录中搜索文件“speak.h“。而”speak.h“正在该目录中,不用再在命令中指定了)。

linux g++ gcc编译c++哪个好,linux g++编译c++相关推荐

  1. linux g 编译目录下,你真的了解Linux下gcc编译器的工作过程吗?

    小豆丁:老张!老张! 老张:干嘛? 小豆丁:咋啦?愁眉苦脸的,是不是又被媳妇给揍了? 老张:开玩笑,我在家那就是相当于老虎的存在,谁敢揍我! 媳妇:老张,你说啥?我没听清,你再说一遍? 老张:我是老虎 ...

  2. Linux系统安装gcc/g++详细过程

    下载: http://ftp.gnu.org/gnu/gcc/gcc-4.5.1/gcc-4.5.1.tar.bz2 浏览: http://ftp.gnu.org/gnu/gcc/gcc-4.5.1/ ...

  3. Linux中gcc的编译、静态库和动态库的制作

    欢迎大家关注笔者,你的关注是我持续更博的最大动力 Linux中gcc的编译.静态库.动态库 文章目录: 1 gcc的编译过程 1.1 gcc的编译过程 1.2 gcc的常用参数 2 gcc 静态库的制 ...

  4. Linux下gcc编译中关于头文件与库文件搜索路径相关问题

    如何指定GCC的默认头文件路径 网上偶搜得之,以之为宝:) 原地址:http://blog.chinaunix.net/u/28781/showart.php?id=401631 ========== ...

  5. g++ linux 编译开栈_方舟编译器编译hello world踩坑全记录

    闲来无事,看到方舟编译器完整开源,于是打算拿来试着编译一个东西来,接下来把踩过的一些坑记录一下. 参考文档 方舟编译器的官网是 OpenArkCompiler​www.openarkcompiler. ...

  6. linux下gcc的编译过程详解

    Linux系统下的Gcc(GNU C Compiler)是GNU推出的功能强大.性能优越的多平台编译器,是GNU的代表作品之一.gcc是可以在多种硬体平台上编译出可执行程序的超级编译器,其执行效率与一 ...

  7. Linux下gcc/g++、make和cmake的区别

    文本程序到可执行文件生成无论在什么平台大致分为以下几个部分:  1.用编辑器编写源代码,如.c文件.  2.用编译器编译代码生成目标文件,如.o.  3.用链接器连接目标代码生成可执行文件,如.exe ...

  8. 【Linux】gcc/g++

    目录 一.概念 二.语法 三.动/静态库 四.关于文件名后缀问题 一.概念 gcc/g++是linux系统中的编译器,是一款软件.该软件只负责编译,与Windows下的vs系列的差别就是:vs系列是一 ...

  9. Linux里gcc编译过程分析和ELF文件格式学习

    GCC编译器背后的故事及常用命令.了解ELF文件格式 前言 一.GCC简介 二.GCC背后的战友 1.Binutils 2.C运行库 三.GCC编译流程及对应命令 1.编译流程图及命令框图 2.实践操 ...

最新文章

  1. CCF个贷违约预测0.891的baseline代码分享
  2. java调用oracle删除,使用IDEA对Oracle数据库进行简单增删改查操作
  3. Win10自带的邮件客户端配置腾讯企业邮箱账号
  4. OpenCV 高级API:TextDetectionModel和TextRecognitionModel
  5. 微擎css使用php变量,$_Wamp;全局变量
  6. (转)淘淘商城系列——服务调用测试
  7. astr在python_python学习之初识字符串
  8. Excel Txt 字符集设置
  9. matplotlib中ion()和ioff()的使用
  10. git提交本地代码到新分支
  11. Ubuntu12.04 耳机无声 扬声器有声的解决
  12. Kubernetes证书类型和适用场景
  13. 绕x,y轴旋转曲面面积公式推导
  14. 如何刷微博,怎么刷微博下拉框,怎样刷微博相关搜索
  15. hp服务器960g固态硬盘,阿斯加特AS 960G SSD测评,这么便宜的大容量SSD你敢要吗
  16. 关联分析(Apriori算法) 面包 牛奶 尿布 啤酒 ...
  17. matlab grayslice,MATLAB图像处理函数汇总大全(2)
  18. 硬盘物理结构详细说明
  19. 启动AutoCAD Electrical提示“缺少缺少驱动程序AceRedist”的解决办法
  20. 设计模式之工厂方法模式---factory method

热门文章

  1. ReadFile 和 补充CreateFile
  2. 【安全漏洞】Emissary 的SSRF漏洞(CVE-2021-32639)发现过程
  3. 世安杯CTF writeup
  4. python操作xlsx文档
  5. 017 Android加固之APK混淆和保护方式
  6. MySQL创建用户(CREATE USER)
  7. 5.1.5 IO核心子系统
  8. 3.1.3 覆盖与交换
  9. MySQL中如何查询数据(上)
  10. Spring boot定制错误页面