Linux下的编程开发——系统调用编程

文章目录

          • 一、工具介绍
            • 1.GCC编译工具
            • 2.GDB调试器
            • 3.MAKE工具
          • 二、系统调用的概念
            • 系统调用与库函数
          • 三.文件编程
            • 1. 文件操作常用系统调用
            • 2. 文件操作常用C库函数
            • 3.示例:文件操作性能比较

一、工具介绍
1.GCC编译工具

(1)工作过程
Linux下的编程开发——系统调用编程_第1张图片
(2)gcc 常用参数
Linux下的编程开发——系统调用编程_第2张图片
(3)实例:
※ 实例1:输出hello world
步骤:
①编写hello.c文件并保存
②编译:
gcc hello.c  结果文件缺省名为a.out

gcc hello.c -o hello  指定结果文件名为hello
③执行:
./a.out 或 ./hello
注意:由于编译得到的程序所在目录并不在系统的PATH环境变量里,所以执行该程序时要给清楚程序所在目录,比如在当前目录下应执行如下命令,代表当前目录的点符号不能丢
Linux下的编程开发——系统调用编程_第3张图片
Linux下的编程开发——系统调用编程_第4张图片
※ 实例2:输出两个数的乘积和阶乘
Linux下的编程开发——系统调用编程_第5张图片
Linux下的编程开发——系统调用编程_第6张图片
注意:-I 指定头文件所在目录,不指定参数将编译出错

2.GDB调试器
  • 命令行方式运行
  • gcc –g 才能使生成的可执行文件包含调试信息,才能被GDB调试
    Linux下的编程开发——系统调用编程_第7张图片
    实例:对上面的calculate.c进行调试,则可以执行以下命令:
    gcc -g calculate.c -o compute
    gdb compute
3.MAKE工具

(1)GNU make

  • 对包含一组文件的项目进行管理
  • 采用增量编译,避免大量的重复计算,提高了编译效率。

(2)makefile脚本文件

  • 所有编译操作写在一个文件内,方便维护编译工作,默认该文件叫makefile 。
  • 该文件定义多个源文件之间的依赖关系;说明如何编译各个源文件并链接生成可执行文件。
  • makefile文件一般由一种两行的脚本单元(规则)组成,简单例子:
    ①编写:vi makefile
    test:test.c test.h (目标文件:依赖文件)
      gcc test.c –o test (达成目标使用的命令,注意句子前有一个tab)
    ②执行:
    make (默认使用当前目录下的makefile)
    make –f mk (指定编译使用的make文件是mk)

    注意:如果执行makefile文件中的某个目标cls的话,可以用 make -f mk cls

示例:
Linux下的编程开发——系统调用编程_第8张图片

二、系统调用的概念
系统调用与库函数

Linux下的编程开发——系统调用编程_第9张图片

  • 为了系统运行安全,用户级的应用程序是不允许直接调用内核级的功能代码
  • 系统调用就是用户进程进入内核的接口层。提供功能实现的内核函数被称为系统调用的“服务例程”
  • 库函数是应用程序编程接口的具体实现。库函数并不一定提供全部系统调用功能的封装,也并不一定必然封装系统调用功能。
    Linux下的编程开发——系统调用编程_第10张图片
三.文件编程
1. 文件操作常用系统调用

Linux下的编程开发——系统调用编程_第11张图片

2. 文件操作常用C库函数

Linux下的编程开发——系统调用编程_第12张图片

3.示例:文件操作性能比较

(1)利用系统调用函数open
Linux下的编程开发——系统调用编程_第13张图片
结果:
Linux下的编程开发——系统调用编程_第14张图片
(2)利用库函数fopen
Linux下的编程开发——系统调用编程_第15张图片
可以看出同样数据量的写入,库函数操作更有效率

你可能感兴趣的:(Linux)