C++和C语言类似,也要经过编译和链接后能够运行,现今有C-Free、VC6.0、VS、GCC、Xcode等常见IDE或编译器,它们不仅可以运行C语言程序,还可以运行C++程序,步骤是类似的,读者须要留心的是C++源文件的后缀,以及GCC中的g++命令。
右图是C/C++代码生成可执行文件的过程:
C语言C++学习加556791282
C++源文件的后缀
C语言源文件的后缀十分统一linux运行c程序,在不同的编译器下都是.c。C++源文件的后缀则有些混乱,不同的编译器支持不同的后缀,下表是一个简单的汇总:
编译器
MicrosoftVisualC++
GCC(GNUC++)
BorlandC++
UNIX
后缀
cpp、cxx、cc
cpp、cxx、cc、c++、C
cpp
C、cc、cxx
UNIX是高昂的商业操作系统,初学者几乎用不到;MicrosoftVisualC++是谷歌的C/C++编译器,VC6.0、VS都使用该编译器。我推荐使用.cpp作为C++源文件的后缀,这样愈发通用和规范。
g++命令
有了C语言开发经验,在VC/VS、C-Free、Xcode等常见IDE下编译C++程序易如反掌,只要把源文件的后缀设置为.cpp即可,相信诸位读者都还能毫无障碍地驾驭。本节我们重点介绍LinuxGCC的使用。
在C语言中,我们使用gcc命令来编译和链接C程序。诸如编译单个源文件:
gccmain.c
编译多个源文件:
gccmain.cmodule.c
编译C++程序时,gcc命令也可以使用,不过要降低-lstdc++选项,否则会发生链接错误。诸如编译单个源文件:
gccmain.cpp-lstdc++
编译多个源文件:
gccmain.cppmodule.cpp-lstdc++
gcc命令在链接时默认使用C的库,只有添加了-lstdc++选项才能使用C++的库。
不过GCC中还有一个g++命令,它专门拿来编译C++程序,广大C++开发人员也都使用这个命令。g++命令和gcc命令的用法如出一辙linux运行c程序,比如编译单个源文件:
g++main.cpp
编译多个源文件:
g++main.cppmodule.cpp
使用-o选项可以指定可执行文件的名称:
g++main.cpp-odemo
./demo
要想理解g++命令,我们得从GCC的历史谈起。GCC是由GUN组织开发的,最初只支持C语言,是一个单纯的C语言编译器,后来GUN组织饱含了更多的精力,致使GCC越发强悍,降低了对C++、Objective-C、Fortran、Java等其他语言的支持,此时的GCC就成了一个编译器套件(套装),是所有编译器的统称。
在这个过程中,gcc命令也做了相应地调整,它不再仅仅支持C语言,而是默认支持C语言,降低参数后也可以支持其他的语言。也就是说linux系统编程,gcc是一个通用命令,它会依照不同的参数调用不同的编译器或链接器。
并且让用户指定参数是一种不明智的行为,不但降低了学习成本,还致使操作愈加复杂,所以后来GCC又针对不同的语言推出了不同的命令,比如g++命令拿来编译C++,gcj命令拿来编译Java,gccgo命令拿来编译Go语言。
在之后使用LinuxGCC时linux操作系统论文,我推荐使用g++命令来编译C++程序,这样愈发简练和规范。