首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用.cpp命令而不是g++ (Linux)编译一个g++文件

用.cpp命令而不是g++ (Linux)编译一个g++文件
EN

Stack Overflow用户
提问于 2021-10-26 23:54:26
回答 2查看 374关注 0票数 0

假设我们有一个简单的c++文件,名为hello.cpp,它打印"Hello!“。

我们通常使用g++ hello.cpp创建可执行文件。当我尝试执行命令c++ hello.cpp时,它成功地创建了可执行文件。它是否应该抛出一个错误,说明没有可用的c++命令?并建议我们使用g++?

我试着在终端上运行man c++,这会打开GNU项目页面。那么,终端是否在内部将我们的c++ hello.cpp替换为g++ hello.cpp?它不应该这样做对吧?

附加信息:

同样,如果我有一个打印"Hello!“的hello.c程序。当我在命令行上执行c hello.c时,会得到以下错误:

代码语言:javascript
复制
$ c hello.c
c: command not found

这是预期的,因为我们必须使用gcc hello.c。为什么c++ hello.cpp没有得到类似的错误?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-10-27 00:07:55

它是否应该抛出一个错误,说明没有可用的c++命令?并建议我们使用g++?

当然,没有任何规则或标准限制或要求c++命令来做任何事情,所以没有“应该”或“不应该”。但是,人们强烈期望c++是一个可工作的C++兼容编译器,它支持与cc类似或相同的标志。

终端内部是否将我们的c++ hello.cpp替换为g++ hello.cpp?

终端是显示事物的设备。终端没有取代它,它对它没有影响。

很可能是您的系统设计器,但可能是管理员、发行者或分发服务器或包设计器(或链中的任何人)将您的系统配置为提供一个名为c++的命令。通常,该命令是指向工作的C++编译器的符号链接,通常是Linux系统上的g++。在我的系统上,/usr/bin/c++程序只是与gcc一起安装的,但是有些系统允许它是可配置

它不应该这样做对吧?

如前所述,终端不应替换命令,对其没有任何影响。

这是预期,因为

它是预期的,因为没有名为c的命令。还有无数其他未知的命令。

cc是C编译器的老名字。c99是C99兼容编译器的标准化名称。

为什么c++ hello.cpp没有得到类似的错误?

因为您的系统上存在一个名为c++的命令。

票数 2
EN

Stack Overflow用户

发布于 2021-10-27 00:04:41

在我的Ubuntu系统中,我看到:

代码语言:javascript
复制
$ ls -l /usr/bin/c++
lrwxrwxrwx 1 root root 21 May  6  2019 /usr/bin/c++ -> /etc/alternatives/c++
$ ls -l /etc/alternatives/c++
lrwxrwxrwx 1 root root 12 May  6  2019 /etc/alternatives/c++ -> /usr/bin/g++

所以c++实际上是到g++的别名(符号链接)。

替代系统允许将编译器c++的别名更改为:

代码语言:javascript
复制
$ update-alternatives --display c++
c++ - auto mode
  link best version is /usr/bin/g++
  link currently points to /usr/bin/g++
  link c++ is /usr/bin/c++
  slave c++.1.gz is /usr/share/man/man1/c++.1.gz
/usr/bin/clang++ - priority 10
/usr/bin/g++ - priority 20
  slave c++.1.gz: /usr/share/man/man1/g++.1.gz

所以c++实际上可以是g++或者clang++

对于一个C编译器来说,您不需要c命令,但是cc,也可以是gcc或clang。

我的CentOS系统在符号链接方面不太明显,但是g++ --versionc++ --version提供了相同的输出,并且都说它们是g++。然而,cc是与gcc直接联系在一起的。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69731174

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档