在Linux系统上运用强大的C/C++编译器

上回在编译过程中,发现C++编译器是一个很强大的C/C++编译器,该编译以速度快、空间效率高为他的特点,它的版本对标准化C++的支持达92.73%,大大的支持了CPU优化工作。

如果你有两个或少数几个C 源文件,也可以方便地利用GCC 编译、连接并生成可执行文件。例如,假设你有两个源文件 main.c 和 factorial.c两个源文件,现在要编译生成一个计算阶乘的程序。

清单 main.c

#include   


#include   


int factorial (int n);  


int main (int argc, char **argv)  


{  


int n;  



if (argc < 2) {  



printf ("Usage: %s n ", argv [0]);  


return -1;  


}  


else {  



n = atoi (argv[1]);  



printf ("Factorial of %d is %d. ", n, factorial (n));  


}  


return 0;  


}  

GCC 可同时用来编译 C 程序和 C++ 程序。一般来说,C 编译器通过源文件的后缀名来判断是 C 程序还是 C++ 程序。在 linux 中,C 源文件的后缀名为 .c,而 C++ 源文件的后缀名为 .C 或 .cpp。

但是,gcc 命令只能编译 C++ 源文件,而不能自动和 C++ 程序使用的库连接。因此,通常使用 g++ 命令来完成 C++ 程序的编译和连接,该程序会自动调用 gcc 实现编译。假设我们有一个如下的 C++ 源文件(hello.C):

#include   


void main (void)  


{  



 cout << "Hello, world!" << endl;  



} 

则可以如下调用 g++ 命令编译、连接并生成可执行文件:

$ g++ -o hello hello.C   


$ ./hello   


Hello, world!   

其它的编译器如:Intel C/C++大家一看名称就知道是Intel的东西,它和VC6完全兼容,不过要挂在VC6下才能用。Watcom C/C++是早先编译器四国大战中的一员,原本是很不错的东西,可惜战略不对,现在已不见声息了。倒是以它为基础的一个OpenWatcom现在还在奋战。

VectorC是我近日才发现的一个好东东,它是个纯C的编译器。IBM的VisualAge for C++原本是IBM想用来淌强大的C/C++编译器这片浑水的东西,不过IBM的战略改了,它就被放弃了。DigitalMars C/C++的前身的Symantec C++(它也是编译器四国大战中的一员),不过现在Symantec不做了。

相关推荐