page contents

如何编译和运行C++程序?

C++ 和C语言类似......

C++ 和C语言类似,也要经过编译和链接后才能运行。在《C语言编译器》专题中我们讲到了 VS、Dev C++、VC 6.0、Code::Blocks、C-Free、GCC、Xcode 等常见 IDE 或编译器,它们除了可以运行C语言程序,还可以运行 C++ 程序,步骤是一样的,这里不再赘述,读者需要留意的是 C++ 源文件的后缀,以及 GCC 中的g++命令。

下图是 C/C++ 代码生成可执行文件的过程:
1015294446-0.jpg

C++源文件的后缀

C语言源文件的后缀非常统一,在不同的编译器下都是.c。C++ 源文件的后缀则有些混乱,不同的编译器支持不同的后缀,下表是一个简单的汇总:

Microsoft Visual C++GCC(GNU C++)Borland C++UNIX
cpp、cxx、cccpp、cxx、cc、c++、CcppC、cc、cxx


UNIX 是昂贵的商业操作系统,初学者几乎用不到;Microsoft Visual C++ 是微软的 C/C++ 编译器,VC 6.0、VS 都使用该编译器。我推荐使用.cpp作为 C++ 源文件的后缀,这样更加通用和规范

g++ 命令

有了C语言开发经验,在 VS、Dev C++、VC6.0、C-Free、Xcode 等常见 IDE 下编译 C++ 程序易如反掌,只要把源文件的后缀设置为.cpp即可,相信各位读者都能够毫无障碍地驾驭。本节我们重点介绍 Linux GCC 的使用。

在C语言中,我们使用gcc命令来编译和链接C程序。例如编译单个源文件:

gcc main.c

编译多个源文件:

gcc main.c module.c

编译C++程序时,gcc命令也可以使用,不过要增加-lstdc++选项,否则会发生链接错误。例如编译单个源文件:

gcc main.cpp -lstdc++

编译多个源文件:

gcc main.cpp module.cpp -lstdc++

gcc命令在链接时默认使用C的库,只有添加了-lstdc++选项才会使用 C++ 的库。

不过 GCC 中还有一个g++命令,它专门用来编译 C++ 程序,广大 C++ 开发人员也都使用这个命令。g++命令和gcc命令的用法如出一辙,例如编译单个源文件:

g++ main.cpp

编译多个源文件:

g++ main.cpp module.cpp

使用-o选项可以指定可执行文件的名称:

g++ main.cpp -o demo
./demo


要想理解g++命令,我们得从 GCC 的历史谈起。GCC 是由 GUN 组织开发的,最初只支持C语言,是一个单纯的C语言编译器,后来 GNU 组织倾注了更多的精力,使得 GCC 越发强大,增加了对 C++、Objective-C、Fortran、Java 等其他语言的支持,此时的 GCC 就成了一个编译器套件(套装),是所有编译器的总称。

在这个过程中,gcc命令也做了相应地调整,它不再仅仅支持C语言,而是默认支持C语言,增加参数后也可以支持其他的语言。也就是说,gcc是一个通用命令,它会根据不同的参数调用不同的编译器或链接器。

但是让用户指定参数是一种不明智的行为,不但增加了学习成本,还使得操作更加复杂,所以后来 GCC 又针对不同的语言推出了不同的命令,例如g++命令用来编译 C++,gcj命令用来编译 Java,gccgo命令用来编译Go语言。

在以后使用 Linux GCC 时,我推荐使用g++命令来编译 C++ 程序,这样更加简洁和规范。


attachments-2021-03-Cuf3BXN76051e3b0be89c.jpg

如果你想用Python开辟副业赚钱,但不熟悉爬虫与反爬虫技术,没有接单途径,也缺乏兼职经验
关注下方微信公众号:Python编程学习圈,获取价值999元全套Python入门到进阶的学习资料以及教程,还有Python技术交流群一起交流学习哦。

attachments-2022-06-gkjdXqMM62ba6d1f11457.jpeg

  • 发表于 2021-03-17 19:00
  • 阅读 ( 403 )
  • 分类:C/C++开发

0 条评论

请先 登录 后评论
小柒
小柒

1046 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. Pack 1131 文章
  3. 小柒 1046 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章