首页 » 编程笔记 » C/C++ » 正文

Linux下如何编译、运行C、C++程序?

Linux   中最重要的软件开发工具是   GCC。GCC   是   GNU   的   C   和   C++   编译器。实际上,GCC   能够编译三种:C、C++   和   Object   C(C   语言的一种面向对象扩展)。利用   gcc   命令可同时编译并连接   C   和   C++   源程序。   
    
  #DEMO#:   hello.c   
    
  如果你有两个或少数几个   C   源,也可以方便地利用   GCC   编译、连接并生成可执行文件。例如,假设你有两个源文件   main.c   和   factorial.c   两个源文件,现在要编译生成一个计算阶乘的程序。   
    
  ———————–   
  清单   factorial.c   
  ———————–   
  #include   <stdio.h>   
  #include   <stdlib.h>   
    
  int   factorial   (int   n)   
  {   
          if   (n   <=   1)   
                  return   1;   
    
          else   
                  return   factorial   (n   -   1)   *   n;   
  }   
  ———————–   
    
  ———————–   
  清单     main.c   
  ———————–   
  #include   <stdio.h>   
  #include   <stdlib.h>   
    
  int   factorial   (int   n);   
    
  int   main   (int   argc,   char   **argv)   
  {   
          int   n;   
    
          if   (argc   <   2)   {   
                  printf   (“Usage:   %s   n\n”,   argv   [0]);   
                  return   -1;   
          }   
          else   {   
                  n   =   atoi   (argv[1]);   
                  printf   (“Factorial   of   %d   is   %d.\n”,   n,   factorial   (n));   
          }   
    
          return   0;   
  }   
  ———————–   
    
  利用如下的命令可编译生成可执行文件,并执行程序:   
  $   gcc   -o   factorial   main.c   factorial.c   
  $   ./factorial   5   
  Factorial   of   5   is   120.   
    
  GCC   可同时用来编译   C   程序和   C++   程序。一般来说,C   编译器通过源文件的后缀名来判断是   C   程序还是   C++   程序。在   Linux   中,C   源文件的后缀名为   .c,而   C++   源文件的后缀名为   .C   或   .cpp。   
    
  但是,gcc   命令只能编译   C++   源文件,而不能自动和   C++   程序使用的库连接。因此,通常使用   g++  命令来完成   C++   程序的编译和连接,该程序会自动调用   gcc   实现编译。假设我们有一个如下的   C++   源文件(hello.C):   
    
  #include   <iostream.h>   
    
  void   main   (void)   
  {   
          cout   <<   “Hello,   world!”   <<   endl;   
  }   
    
  则可以如下调用   g++   命令编译、连接并生成可执行文件:   
    
  $   g++   -o   hello   hello.C   
  $   ./hello   
  Hello,   world!   
    
  1.7.2     gcc/egcs   的主要选项   
                                  表   1-3     gcc   命令的常用选项   
  选项                                 解释   
  -ansi                               只支持   ANSI   的   C   语法。这一选项将禁止   GNU   C   的某些特色,   
                                          例如   asm   或   typeof   关键词。   
  -c                                     只编译并生成目标文件。   
  -DMACRO                           以字符串“1”定义   MACRO   宏。   
  -DMACRO=DEFN                 以字符串“DEFN”定义   MACRO   宏。   
  -E                                     只运行   C   预编译器。   
  -g                                     生成调试信息。GNU   调试器可利用该信息。   
  -IDIRECTORY                   指定额外的头文件搜索路径DIRECTORY。   
  -LDIRECTORY                   指定额外的函数库搜索路径DIRECTORY。   
  -lLIBRARY                       连接时搜索指定的函数库LIBRARY。   
  -m486                               针对   486   进行代码优化。   
  -o   FILE                           生成指定的输出文件。用在生成可执行文件时。   
  -O0                                   不进行优化处理。   
  -O   或   -O1                       优化生成代码。   
  -O2                                   进一步优化。   
  -O3                                   比   -O2   更进一步优化,包括   inline   函数。   
  -shared                           生成共享目标文件。通常用在建立共享库时。   
  -static                           禁止共享连接。   
  -UMACRO                           取消对   MACRO   宏的定义。   
  -w                                     不生成任何警告信息。   
  -Wall                               生成所有警告信息。   
    
  #DEMO#