【科普】GNU、GNU/Linux、Linux、Unix之间的关系和区别,以及延伸g++、gcc的关系和区别

来自:《陆伟峰:论GNU、Linux和GNU/Linux之间的关系》http://os.51cto.com/art/200608/30399.htm
《C++学习笔记:GCC和G++》https://www.linuxidc.com/Linux/2014-10/108647.htm
《Linux环境中gcc和g++的区别详解》https://www.linuxidc.com/Linux/2018-10/155027.htm
看完以上三篇文章可以了解到:
Linux是由芬兰人林纳斯•托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的一种操作系统。而GNU计划是是由Richard Stallman在1983年9月27日公开发起的。它的目标是创建一套完全自由的操作系统。1990年,GNU计划已经开发出的软件包括了一个功能强大的文字编辑器Emacs,C语言编译器GCC,以及大部分UNIX系统的程序库和工具。唯一依然没有完成的重要组件就是操作系统的内核,于是92年Linux与其他GNU软件结合,完全自由的操作系统正式诞生。

在不同的操作系统和编译器中,运行C和C++的编译器命令也不同,最常用的是GNU编译器和微软Visual Studio编译器(这里我们不作讨论)。然而GNU的g++和gcc有什么关系和区别呢?我们都知道在编译器运行我们的源文件时经过了:预处理、编译、汇编、连接4个过程,在运行C++程序时,用gcc在预处理时能生成.i文件,而在编译的时候会出现报错。总的来说g++是可以运行C、C++两种类型的源文件的,而gcc只能运行C语言的源文件。

对于C++源文件有两种命令方式执行:

$g++ -o prog1 prog1.cpp
$./prog1

-o prog1是编译器参数,制定了可执文件的文件名。此命令生成一个名为prog1的可执行文件(UNIX或Linux系统下没有后缀)。

$g++  prog1.cpp
$./a.out

省略-o prog1 系统编译生成一个名为a.out的可执行文件。

猜你喜欢

转载自blog.csdn.net/Kelsey98/article/details/86523440