摘要:今天用 gcc 编译 c++ 代码,发现会报错:std::cout  这个函数无定义,所以决定查一下原因,在这里总结一下,虽然以后回头看一定会觉得太菜,但是新手期还是总要经历的一个阶段,所以就记录下来。

1,什麽是 gcc / g++

首先说明:gcc 和 GCC 是两个完全不同的东西

GCC:GUN Compiler Collection(GUN 编译器集合),它可以编译 C,C++,Object-C等语言。

gcc 是 GUN C Compiler (C 编译器)

g++ 是 GUN C++ Compiler (C++ 编译器)

一个本质事实是,就本质而言,gcc 和 g++ 并不是编译器,而是一种驱动器,根据参数中要编译的文件类型,调用对应的 GUN 的编译器而已,比如,用 gcc 编译一个 .c 文件的话,会有一下几个步骤:

step1:Call a preprocessor, like cpp.

step2:Call an actual compiler, like cc or cc1.

step3:Call an assembler, like as.

step4:Call a linker, like ld.

由于编译器是可以更换的,所以 gcc 不仅仅可以编译 C 文件,所以更准确的说:gcc 调用的是 C Compiler,而 g++ 调用了 C++ compiler。

2,gcc 和 g++ 的主要区别

a,对于 *.c 和 *.cpp 文件,gcc 分别当作 c 和 cpp 文件编译

b,对于 *.c 和 *.cpp 文件,g++ 则统一当作 cpp 文件编译

c,在使用 g++ 编译文件时,g++ 会自动链接标准库STL,而 gcc 不会

d,在用 gcc 编译 c++ 文件时,为了能使用STL,需要加参数 -lstdc++ ,但这并不代表 gcc 和 g++ 等价,它们的区别不仅仅是这个。

$ gcc hello.cpp -lstdc++ -o hello

3,主要参数

-g : turn on debugging(so GDB gives morefriendly output)

-Wall : returns on most warnings

-O or -O2 : turn on optimizations

-o : name of the output file

-c : output an object file (.o)

-L : specify an includedirectory

-l : link with librarylib.a

参考博客:https://www.cnblogs.com/oxspirt/p/6847438.html

Ubuntu---gcc && g++的更多相关文章

  1. ubuntu 14.04 更新 gcc/g++ 4.9.2

    ubuntu 14.04 更新 gcc/g++ 4.9.2 最近看到c++11非常的好用,尤其是自带了regex,于是稍微学了一下c++11的新特性.可是我在编译一个regex程序是却发现稍微复杂一点 ...

  2. UBUNTU 下如何升级 gcc, g++

    正如大家所知道的GCC并不支持"make uninstall". 一种推荐安装方式就是把GCC 安装在你自己指定的一个路径,当你不须要某个GCC版本号的时候你仅仅须要移除相应版本号 ...

  3. ubuntu下安装低级版本gcc/g++ 并随意切换

    来自:http://blog.sina.com.cn/s/blog_6cee149d010129bl.html 发现Android的版本中编译Host的程序经常因为本机的Gcc版本过高,需要这样那样的 ...

  4. ubuntu 16.04 更新 gcc/g++ 4.9.2

    ubuntu 转载 2016年10月12日 :: 标签:ubuntu /g++ /gcc [html] view plain copy sudo dpkg -l g++ 最近在学C++primer , ...

  5. ubuntu 14.04 gcc/g++版本降低

    Matlab 2014a支持的gcc/g++版本是4.7x,而ubuntu 14.04以及更高版本默认安装的版本都是4.8及以上,因此需要降低gcc/g++版本,方法如下: 1 安装 $ sudo a ...

  6. Ubuntu install g++

    We can use two ways to  install g++ on Ubuntu. 1.  a. sudo apt-get install make gcc g++.      b. sud ...

  7. Windows Sublime Text 配置Linux子系统(WSL)下的 gcc/g++ 编译环境

    0. 简介(若已了解背景可以跳过此部分) Windows 10 Build 14316以上版本中加入了"Windows系统的Linux子系统"(Windows Subsystem ...

  8. gcc/g++多版本切换 (ubuntu18.04)

    使用Ubuntu18.04已经有一段时间了,在使用过程中经常需要处理不同软件的编译工作,但是这时候就遇到这样一个问题,那就是不同软件,甚至是同一个软件的不同版本都会使用不同版本的gcc/g++来进行编 ...

  9. Ubuntu安装g++命令

    Ubuntu安装g++ sudo apt-get install make gcc g++ 再装上函数手册 sudo apt-get install manpages-dev 或者采用 sudo ap ...

  10. CentOS 6.6 升级GCC G++ (当前最新版本为v6.1.0) (完整)

    ---恢复内容开始--- CentOS 6.6 升级GCC G++ (当前最新GCC/G++版本为v6.1.0) 没有便捷方式, yum update....   yum install 或者 添加y ...

随机推荐

  1. python文件管理小计

    1.读取只当路径下所有文件和文件夹 import os def file_name(file_dir): for root, dirs, files in os.walk(file_dir): pri ...

  2. Linux系统编程——Daemon进程

    目录 Daemon进程介绍 前提知识 Daemon进程的编程规则 Daemon进程介绍 Daemon运行在后台也称作"后台服务进程". 它是没有控制终端与之相连的进程.它独立与控制 ...

  3. Java读取Excel并与SqlServer库中的数据比较

    先说说需求.在SQL server数据库中的表里存在一些数据,现在整理的Excel文档中也存在一些数据,现在需要通过根据比较某个字段值(唯一)来判断出,在库中有但excel中没有的数据. 大概的思路就 ...

  4. 第三方deepvoice3_pytorch安装使用

    项目地址:https://github.com/r9y9/deepvoice3_pytorch 解决两个问题:一使用外部数据集训练,二加载pre-trained模型做fine-tune 1:安装必要依 ...

  5. ESP32 做Web服务器 http Server步骤

    资料不多.多是国外网站的. 百度搜基本出来的是这个网站https://www.dfrobot.com/blog-922.html 出来的代码是: #include <WiFi.h>#inc ...

  6. jenkins部署前后端分离的vue项目

    1 General Name: 变量名. 类似给分支起一个名字的意思, 可随意取 Description: 描述, 非必填 Parameter Type: 选择 Branch or Tag Defau ...

  7. C#验证ip地址的代码

    如下的代码是关于C#验证ip地址的代码. public Boolean CheckIPValid(String strIP) { char chrFullStop = '.'; string[] ar ...

  8. Oracle中文排序问题

    默认感觉中文是按拼音排序,如果没实现效果,请加上其它排序,例如日期 表名为 dept ,其中name字段是中文,下面分别实现按照单位名称的笔划.部首和拼音排序.1: //按照笔划排序2: select ...

  9. LinuxMint 下 B站 番 blv 缓存 转 mp4

    参考https://www.littleqiu.net/archives/886 (不过我使用绝对路径,ffmpeg报错,相对路径没问题) 一.安装ffmpge sudo apt-get instal ...

  10. vue简单的导航栏

    <style> img{ display:block; margin:0 auto; width:500px; height:500px; } #app li{ list-style: n ...