Linux系统下的c语言编程

            Linux操作系统支持多种高级语言,其中就包括c语言,linux系统的内核的绝大多数代码就是用c编写的,另外Linux平台上的许多应用程序也是用c完成的。Liinux系统拥有许多用于用于程序的生成以及分析的软件工具。其中c语言主要使用gcc和make工具等,学会使用这些工具对初学者十分重要。

           可以使用Linux中的多种文本编辑器(如vi、pico、gedit、emacs等)来编写程序,下面用vi文本来编写一个c语言程序输出“hello linux”

           首先打开vi文本编辑器文件名为hello.c,输入程序代码,这和我们平时编写的C语言程序一样,接着保存退出,然后就是使用gcc编译、链接后生成可执行文件hello,最后运行hello文件。

          

           Linux下最常用的C编辑器是GNU gcc。gcc命令可以启动c编译系统,当执行gcc时,它将完成预处理、编译、汇编和连接4个步骤并生成最后的可执行代码。产生的可执行程序默认保存为a.out文件。gcc命令可以接受发多种文件类型并依据用户指定的命令行参数对它们做出相应的处理。这些文件类型包括静态链接库(扩展名为.a),c语言源程序(.c),c++源文件(.C,.cc或者.cpp),汇编语言源文件(.s),预处理输出文件(.i)和目标代码(.o)。如果gcc无法根据一个文件的扩展名来判断一个文件的类型,它将假设这个文件是一个目标文件或库文件。

            gcc支持编译的后缀名:

                   

.后缀名对应的语言
.cC原始程序
.CC++原始程序
.ccC++原始程序
.cxxC++原始程序
.mObjective-C原始程序
.i已经过预处理的C原始程序
.ii已经过预处理的C++原始程序
.s汇编语言原始程序
.S汇编语言原始程序
.h预处理文件(头文件)
.o目标文件
.a/.so编译后的库文件
             gcc 命令语法: gcc 【options】 filename-list

             常用选项:

             -ansi                                               以ANSI标准

             -c                                                     跳过连接步骤,编译成目标(.o)文件

             -g                                                     创建用于gdb的符号表和调试信息

             -S                                                    跳过汇编和连接阶段,并保留编译产生的汇编代码(.a文件)

             -v                                                     产生尽可能多的输出信息

             -w                                                   忽略警告信息

             -o                                                    将生成的可执行程序保存到指定文件中,而不是默认的a.out

  
             函数库:函数库是一组预先编译好的函数的集合,这些函数都是按照可重用的原则编写的,它们通常由一些相互关联的函数组成并执行某项常见的任务。

             标准系统库文件一般存放在Linux文件系统/lib和/usr/lib目录中。库文件的名字以lib开头,最后部分以.开始,后面跟类型:.a代表传统的静态函数库    .so代表共享函数库

             例如,libm.a为静态数学函数库

             函数库通常以静态库和共享库两种格式存在,可用ls    /usr/lib命令查看

             下面创建一个小型函数库,它包含两个函数pro1和pro2,然后在一个示例程序中调用pro2,然后运行,调试

              1.编写两个函数pro1和pro2的源文件

             

              2.用gcc编译这两个函数,产生包含在库文件中的目标函数。使用gcc 的 -c 选项是为了阻止编译器创建一个完整的程序,gcc将把源程序编译成目标函数,文件尾以.o结尾。如果此时试图创建一个完整的程序将不会成功,以为还未定义main函数

             

              3.为库文件创建一个头文件lib.h

             

              4.编写主程序,调用pro2

             

             5.编译并测试这个程序。暂时为编译器显式指定目标文件,然后要求编译器编译的文件并将其与预先编译好的目标模块pro2.o链接

           

            6.现在,创建并使用一个空文件。用ar程序创建一个归档文件并将目标文件添加进去,当然ar也可以用来创建任何类型的归档文件

           

           当然也可以用-l选项来访问函数库,但是因为其未保存在标准位置,所以必须用-L选项来指示gcc在何处可以找到它,如下所示:;

          

           可以使用nm命令来查看目标文件、函数库或可执行文件里包含的函数

          

           静态库的一个缺点,当同时运行许多应用程序并且它们都使用来自同一个函数库的函数时,就会在内存中有同一函数的多份拷贝,在程序文件自身也有多份同样的拷贝。这将消耗大量宝贵的内存和磁盘空间。共享库克服了这种不足,可以用共享库来实现函数的动态链接。

           在c语言开发的程序中,许多头文件和源文件都互相依赖。如果修改了其中的一个文件,就必须重新编译所有依赖它的文件。Linux有个很强大的工具make,它可以管理多个模块。make工具依赖一个特殊的,名字为makefile或Makefile的文件,这个文件描述了系统中的各个模块之间的依赖关系。系统中的部分文件改变时,make根据这些关系决定一个需要重新编译的文件的最小集合。如果软件包括几十个源文件和多个可执行文件,这时make工具特别有用。

           make工具的命令语法:

           make [选项]    [目标]  [宏定义]

           常用选项:

           -d                               显示调试信息

           -f 文件                       此选项告诉make使用指定文件作为依赖关系文件

           -n                              不执行makefile中的命令,只是显示输出这些命令

           -s                              执行但不显示任何信息

           GNU make的主要功能是读进一个文本文件makefile并根据makefile的内容执行一系列的工作。

           一个Makefile文件主要包括含有一系列的make规则,每条make规则包含以下内容:

           目标文件列表:依赖文件列表

          <TAB> 命令列表

           Linux系统中有许多调试器,包括gdb、kgdb、xxgdb、mxgdb等。GNU调试程序gdb可以用于调试C、C++、Module-2、PASCAL等多种语言携程的程序。

           下面利用一个函数来掩饰gdb的调试用法,这个函数要求输入两个整数,判断输出里面较大的那个值

           1.设计编译源程序代码

            

             2.使用gcc编译程序,使用含有-g选项的gcc命令,这样编译出的可执行代码中才包含调试信息,否则之后的gdb无法载入该可执行文件。

             3.进入gdb调试环境:gdb后面跟的是可执行文件

               

               4.使用gdb调试程序

                (1)查看源程序,在gdb中输入“l“就可以查看源程序,一次显示十行。

                

                 (2)使用”b"命令设置断点

                  (3) 使用命令“info b”查看断点信息

                    

                     (4)输入“r”可以运行程序

                     (5)输入“n”或“s”可以单步运行,它们的区别是,若有函数,调用时,“s”会进入该函数,“n'不会进入该函数

                     (6)输入”p 变量名“可以产看指定变量的值

                      

                     (7)在查看完变量或堆栈的情况后可以输入命令”c“恢复程序的正常运行,把剩余的程序执行完,并显示执行结果

                     (8)可以通过输入命令“q”,回车后退出gdb环境

                     


### 回答1: 在 Linux 系统下编写 C 语言程序的方法有很多,常见的有以下几种: 1. 使用命令行编译器,如 GCC(GNU Compiler Collection)。 2. 使用文本编辑器和命令行编译器配合进行编程。 3. 使用集成开发环境(IDE)进行编程,如 Eclipse, Code::Blocks。 在编写代码之前,需要安装 GCC 编译器。在 Ubuntu 上,可以使用命令 "sudo apt-get install build-essential" 安装。 编写完代码后,使用命令 "gcc -o [可执行文件名] [源文件名].c" 进行编译,编译成功后可以使用 "./[可执行文件名]" 运行程序。 ### 回答2: 在Linux系统下使用C语言编程,既可以使用文本编辑器手动编写代码,也可以使用IDE。常用的文本编辑器有vi,emacs,nano等,开发工具有Code::Blocks,Eclipse,NetBeans等。 Linux系统下使用C语言编程需要安装gcc编译器。gcc是GNU C语言编译器,可以将C语言代码编译成机器码。执行以下命令安装gcc: sudo apt-get install gcc 编写C语言代码后,使用gcc编译器将代码编译成可执行文件。例如,将一个名为hello.c的文件编译成名为hello的可执行文件,执行以下命令: gcc -o hello hello.c 其,-o表示输出文件名为hello。 编译后,可以执行以下命令运行程序: ./hello 在Linux系统下,使用C语言编程可以方便地访问系统资源,如文件,网络等。Linux系统提供了许多C语言库,如libc,libm等,可以方便地进行编程。同时,Linux系统具有较高的稳定性和安全性,可以使用C语言编写高性能,高可靠性的程序。 总之,Linux系统下使用C语言编程是一种方便,高效,稳定的编程方式。它可以满足开发者的需求,同时为开源社区的发展做出贡献。 ### 回答3: Linux是一种广泛使用的操作系统,适用于用于编程的多种语言,包括C语言C语言是一种古老但常用的编程语言,它通常用于系统编程和操作系统开发。在Linux系统C语言编程具有非常广泛和多样的应用。以下是关于Linux系统C语言编程的一些重要信息。 首先,C语言Linux系统是一种非常重要的编程语言。尽管许多其他编程语言也可以在Linux上使用,但C语言仍然是一个最流行和灵活的编程语言之一。C语言几乎可以用于任何类型的开发,包括应用程序系统编程等。 其次,在Linux系统进行C语言编程的常用工具包括GCC编译器,Make工具和调试工具如GDB。 GCC编译器是GNU C语言编译器的缩写,是一种可在多平台上编译C代码的工具。Make工具是用于编译和生成可执行文件的工具。GDB是一个强大的调试工具,可帮助开发人员检查和排查代码的错误。 第三,Linux系统的优势为C语言开发者提供了多种可能性。一种是通过CLI(命令行界面)进行编程,这对于那些使用Linux服务器的开发人员来说非常方便。另一种则是在Linux上使用集成开发环境(IDE),如Eclipse IDE和Code::Blocks等,简化了代码编写和调试过程。 最后,C语言Linux系统拥有广泛的应用领域。许多系统编程和操作系统任务需要C语言的应用程序,如驱动程序开发和网络编程等。C语言还被广泛用于游戏开发和嵌入式系统开发等多个领域。 综上所述,C语言Linux系统非常有用,具有广泛的应用场景和多种工具和集成开发环境供开发人员使用。C语言的流行和灵活性使其成为Linux系统下最受欢迎的编程语言之一。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值