摘要:今天用 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. Firefox控制台日志转入文件

    应该说这个需求并不常见-但有时候我的确想过,要是能知道Firefox此时在干吗就好了–有那么几次,该运行的脚本没有运行,状态条显示页面的加载并未完成,但你却永远等不到它. 意外地是,谷哥和度娘似乎并不 ...

  2. android SDK 安装

      Android SDK在线更新镜像服务器 参见:http://www.androiddevtools.cn/   1. 启动 Android SDK Manager ,打开主界面,依次选择『Too ...

  3. [转]Win2012的 IIS 503 错误

    下载并安装 https://www.microsoft.com/zh-CN/download/details.aspx?id=48145 因为安装了 dotnet-hosting-2.2.3-win. ...

  4. Mono的CustomConditionAttribute使用

    1.Mono的CustomConditionAttribute使用有诸多的限制,没有在XML中定义来的灵活 2.CustomConditionAttribute定义的子类必须和ExtensionAtt ...

  5. Tesseract训练

    最近在用Tesseract做一个图片识别的小应用,目标图像只有数字和英文字母,在实际使用过程中发现个别数识别错误,因此不得不研究学习Tesseract的训练. http://www.cnblogs.c ...

  6. 图解 (a + b) * (a + b) == a**2 + 2*a*b + b**2

    示意图

  7. sql语句case when 以及left()

    select count(CASE jyje WHEN '1300' THEN '2' ELSE '1' END) as count  from tpent_orders where cplx = 6 ...

  8. 特殊字符的过滤,防止xss攻击

    概念 XSS攻击全称跨站脚本攻击,是为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS,XSS是一种在web应用中的计算机安全漏洞,它允 ...

  9. Oracle监听已经启动了 sqlplus / as sysdba 仍然报 ERROR:ORA-12560

    我的Oracle是11g的 system 的密码忘记了, 但是scott的密码我还记得而且能登录 . 想以sqlplus /as sysdba 修改system密码 一直在报 ERROR:ORA-12 ...

  10. 文件服务之二:ftp协议

    FTP连接 命令连接 传输命令(客户端发给服务端的命令),服务端的21/tcp 数据连接 传输数据(传输数据时建立,数据传输完拆除) 数据链接的建立方法:主动.被动 主动模式(PORTstyle服务器 ...