Linux系统下使用c++命令而非g++编译.cpp文件的疑问
原因解释
c++不是被终端替换执行,它本身就是 POSIX标准规定的C++编译器标准调用入口,是合法的系统命令。
绝大多数Linux发行版安装GNU编译器套件(GCC)时,会自动创建c++到g++的软链接,你执行c++ hello.cpp本质就是在执行g++ hello.cpp,自然不会报错。你可以执行ls -l $(which c++)查看这个软链接的指向,执行c++ --version也能看到和g++ --version完全一致的输出。- 你提到的
c命令不存在是正常情况,因为C语言的标准编译器调用入口是cc而非c,不存在和c++对应的c这个标准命令。你可以尝试执行cc hello.c,和gcc hello.c效果完全一致,因为GCC安装时也会默认创建cc到gcc的软链接,这才是和c++对应的C语言编译器标准调用名。 - 这个别名设计的作用是兼容不同编译器环境:如果系统安装的是Clang编译器,
c++通常会指向clang++、cc会指向clang,上层调用不需要关心底层具体用的是GCC还是Clang,符合可移植性要求。
内容的提问来源于stack exchange,提问作者siv2r
相关产品推荐
相关产品推荐

