Ubuntu---gcc && g++
摘要:今天用 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++的更多相关文章
- ubuntu 14.04 更新 gcc/g++ 4.9.2
ubuntu 14.04 更新 gcc/g++ 4.9.2 最近看到c++11非常的好用,尤其是自带了regex,于是稍微学了一下c++11的新特性.可是我在编译一个regex程序是却发现稍微复杂一点 ...
- UBUNTU 下如何升级 gcc, g++
正如大家所知道的GCC并不支持"make uninstall". 一种推荐安装方式就是把GCC 安装在你自己指定的一个路径,当你不须要某个GCC版本号的时候你仅仅须要移除相应版本号 ...
- ubuntu下安装低级版本gcc/g++ 并随意切换
来自:http://blog.sina.com.cn/s/blog_6cee149d010129bl.html 发现Android的版本中编译Host的程序经常因为本机的Gcc版本过高,需要这样那样的 ...
- 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 , ...
- ubuntu 14.04 gcc/g++版本降低
Matlab 2014a支持的gcc/g++版本是4.7x,而ubuntu 14.04以及更高版本默认安装的版本都是4.8及以上,因此需要降低gcc/g++版本,方法如下: 1 安装 $ sudo a ...
- Ubuntu install g++
We can use two ways to install g++ on Ubuntu. 1. a. sudo apt-get install make gcc g++. b. sud ...
- Windows Sublime Text 配置Linux子系统(WSL)下的 gcc/g++ 编译环境
0. 简介(若已了解背景可以跳过此部分) Windows 10 Build 14316以上版本中加入了"Windows系统的Linux子系统"(Windows Subsystem ...
- gcc/g++多版本切换 (ubuntu18.04)
使用Ubuntu18.04已经有一段时间了,在使用过程中经常需要处理不同软件的编译工作,但是这时候就遇到这样一个问题,那就是不同软件,甚至是同一个软件的不同版本都会使用不同版本的gcc/g++来进行编 ...
- Ubuntu安装g++命令
Ubuntu安装g++ sudo apt-get install make gcc g++ 再装上函数手册 sudo apt-get install manpages-dev 或者采用 sudo ap ...
- CentOS 6.6 升级GCC G++ (当前最新版本为v6.1.0) (完整)
---恢复内容开始--- CentOS 6.6 升级GCC G++ (当前最新GCC/G++版本为v6.1.0) 没有便捷方式, yum update.... yum install 或者 添加y ...
随机推荐
- Firefox控制台日志转入文件
应该说这个需求并不常见-但有时候我的确想过,要是能知道Firefox此时在干吗就好了–有那么几次,该运行的脚本没有运行,状态条显示页面的加载并未完成,但你却永远等不到它. 意外地是,谷哥和度娘似乎并不 ...
- android SDK 安装
Android SDK在线更新镜像服务器 参见:http://www.androiddevtools.cn/ 1. 启动 Android SDK Manager ,打开主界面,依次选择『Too ...
- [转]Win2012的 IIS 503 错误
下载并安装 https://www.microsoft.com/zh-CN/download/details.aspx?id=48145 因为安装了 dotnet-hosting-2.2.3-win. ...
- Mono的CustomConditionAttribute使用
1.Mono的CustomConditionAttribute使用有诸多的限制,没有在XML中定义来的灵活 2.CustomConditionAttribute定义的子类必须和ExtensionAtt ...
- Tesseract训练
最近在用Tesseract做一个图片识别的小应用,目标图像只有数字和英文字母,在实际使用过程中发现个别数识别错误,因此不得不研究学习Tesseract的训练. http://www.cnblogs.c ...
- 图解 (a + b) * (a + b) == a**2 + 2*a*b + b**2
示意图
- sql语句case when 以及left()
select count(CASE jyje WHEN '1300' THEN '2' ELSE '1' END) as count from tpent_orders where cplx = 6 ...
- 特殊字符的过滤,防止xss攻击
概念 XSS攻击全称跨站脚本攻击,是为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS,XSS是一种在web应用中的计算机安全漏洞,它允 ...
- Oracle监听已经启动了 sqlplus / as sysdba 仍然报 ERROR:ORA-12560
我的Oracle是11g的 system 的密码忘记了, 但是scott的密码我还记得而且能登录 . 想以sqlplus /as sysdba 修改system密码 一直在报 ERROR:ORA-12 ...
- 文件服务之二:ftp协议
FTP连接 命令连接 传输命令(客户端发给服务端的命令),服务端的21/tcp 数据连接 传输数据(传输数据时建立,数据传输完拆除) 数据链接的建立方法:主动.被动 主动模式(PORTstyle服务器 ...