Linux下如何编译并运行C程序

时间:2021-04-20 09:17:47

综合自:http://www.cnblogs.com/javadotnet/articles/1918930.html 

http://blog.csdn.net/shijinupc/article/details/6789554

CC是Linux操作系统下一个非常重要的源代码编译工具,有着许多重要的选项,支持许多不同语言的编译,如C、C++、Ada、Fortran、Objective、Perl、Python、Ruby以及Java等,甚至Linux的许多内核和许多其他*软件以及开放源码应用程序都是用C语言编写并经gcc编译而成的.

    1.编译单个源文件

    [例如]在屏幕上打印"Hello,Linux."

    [源代码]

    #include<stdio.h>

    #include<stdlib.h>

    int main(int argc,char **argv)

    {

        printf("Hello,Linux.\n");

        exit(0);

    }

    将源文件保存为hello.c,开始进行编译

    $gcc -o hello hello.c

    编译成功完成后,在当前路径下,生成一个名为hello的文件,然后执行

    $./hello

    在屏幕上,你将会看到打印结果:Hello,Linux.

    说明:在默认情况下,编译成功完成后,会在当前路径下,生成一个名为a.out的文件,然后执行$./a.out便可打印结果,但通常可以通过选项-o来指定自己的可执行程序名称;

    2.编译多个源文件

    3.使用外部函数库

    4.使用共享函数库和静态函数库

    5.gcc选项详细描述


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                               生成所有警告信息。