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

159 篇文章 0 订阅
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#     
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值