c++程序的运行
2017-02-05 14:29
106 查看
本文转自: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 中的
下图是 C/C++ 代码生成可执行文件的过程:
C语言源文件的后缀非常统一,在不同的编译器下都是
UNIX 是昂贵的商业操作系统,初学者几乎用不到;Microsoft Visual C++ 是微软的 C/C++ 编译器,VC 6.0、VS 都使用该编译器。我推荐使用
C++ 源文件的后缀,这样更加通用和规范。
有了C语言开发经验,在 VC/VS、C-Free、Xcode 等常见 IDE 下编译 C++ 程序易如反掌,只要把源文件的后缀设置为
Linux GCC 的使用。
在C语言中,我们使用
gcc main.c
编译多个源文件:
gcc main.c module.c
编译C++程序时,
gcc main.cpp -lstdc++
编译多个源文件:
gcc main.cpp module.cpp -lstdc++
C++ 的库。
不过 GCC 中还有一个
C++ 程序,广大 C++ 开发人员也都使用这个命令。
g++ main.cpp
编译多个源文件:
g++ main.cpp module.cpp
使用
g++ main.cpp -o demo
./demo
要想理解
GCC 的历史谈起。GCC 是由 GUN 组织开发的,最初只支持C语言,是一个单纯的C语言编译器,后来 GUN 组织倾注了更多的精力,使得 GCC 越发强大,增加了对 C++、Objective-C、Fortran、Java 等其他语言的支持,此时的 GCC 就成了一个编译器套件(套装),是所有编译器的总称。
在这个过程中,
但是让用户指定参数是一种不明智的行为,不但增加了学习成本,还使得操作更加复杂,所以后来 GCC 又针对不同的语言推出了不同的命令,例如
Java,
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、cc | cpp、cxx、cc、c++、C | cpp | C、cc、cxx |
.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语言。
相关文章推荐
- 用mingw编译C++工程;程序里面的cout<<"aaa";cmd运行c++程序,aaa内容在控制台不显示,如何将aaa输出到控制台屏幕并将控制台内容写到一个文件中。
- Windows下使用Eclipse运行C、C++程序
- 在ubuntu linux下安装eclipse以及运行c++程序的安装步骤17832人阅读 本文档免费下载 本人linux版本是ubuntu 9.10 , 下载的eclipse版本 和 c++ 插件
- 让自己的C++程序(非服务程序)运行为一个windows service
- Notepad++搭配MinGW编译运行C,C++程序
- 关于运行C++程序的过程中遇到的问题小结
- DOS下运行C++程序配置
- Ubuntu下用终端编译运行c++程序
- 摆脱VC++6.0,教你如何用visual Studio2010完美运行C++程序
- CGI编程--Tomcat下运行c++程序
- 在Ubuntu中安装sublime并编译以及运行C++程序
- [转]防止C++程序重复运行的几种方法
- Matlab下运行c++程序的配置(包含opencv的c++程序)
- VS2010中运行C++程序,dos窗口自动关闭解决方法
- 在linux下安装eclipse以及运行c++程序的安装步骤
- 【VSCode】Ubuntu下VSCode编译运行c++程序
- 如何在windows中使用cmd命令去编译,运行C++程序
- linux下使用vim编写运行C,C++程序(以hello world为例)
- 64位Fedora运行32位C++程序中int精度溢出处理
- Linux 下编译并运行C++程序