c++程序的运行

本文转自:http://c.biancheng.net/cpp/biancheng/view/3253.html


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


下图是 C/C++ 代码生成可执行文件的过程:

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语言开发经验,在 VC/VS、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语言编译器,后来 GUN 组织倾注了更多的精力,使得 GCC 越发强大,增加了对 C++、Objective-C、Fortran、Java 等其他语言的支持,此时的 GCC 就成了一个编译器套件(套装),是所有编译器的总称。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值