系统调用
系统调用是操作系统提供给外部应用程序的一组特殊的接口。
应用程序通过这组特殊“接口”来获得操作系统内核提供的服务。
在 C 语言中,操作系统的系统调用通常通过函数调用的形式完成,

这是因为这些函数封装了系统调用的细节,将系统调用的入口、参数以及返回值用 C 语言的函数调用过程实现。

应用编程接口API
程序员并不是直接使用系统调用。
程序员调用的是函数库中定义的应用编程接口API。
也就是,通过应用编程接口,使用系统调用,请求内核服务。
一个API可能对应几个系统调用。
通过系统调用就可以请求内核服务。

Gcc的编译流程
预处理阶段: gcc –E hello.c –o hello.i
编译阶段: gcc –S hello.i –o hello.s
汇编阶段:gcc –c hello.s –o hello.o
链接阶段:gcc hello.o –o hello
执行:./hello

GCC的选项
GCC 有超过100个的编译选项可用. 主要包括编译处理选项、警告选项、出错选项、优化选项、体系结构选项。
 -c,只编译,不连接成为可执行文件,编译器只是由输入的.c等源代码文件生成.o为后缀的目标文件,通常用于编译不包含主程序的子程序文件。
-o output_filename,确定输出文件的名称为output_filename,同时这个名称不能和源文件同名。如果不给出这个选项,gcc就给出预设的可执行文件a.out。
-S 编译选项告诉 GCC 在为 C 代码产生了汇编语言文件后停止编译. GCC 产生的汇编语言文件的缺省扩展名是 .s .

-g,产生符号调试工具(GNU的gdb)所必要的符号信息,要想对源代码进行调试,我们就必须加入这个选项。
-O,对程序进行优化编译、连接,产生的可执行文件的执行效率可以提高,但是,编译、连接的速度就相应地要慢一些。
-O2,比-O更好的优化编译、连接,当然整个编译、连接过程会更慢。

最新文章

  1. float-position的一些细节
  2. hibernate配置文件中的schema="dbo"在MySQL数据库不可用
  3. 代码实现SQL Server动态行转列,不用存储过程
  4. .NET项目开发—浅谈面向接口编程、可测试性、单元测试、迭代重构(项目小结)
  5. [转]android:clipToPadding和android:clipChildren
  6. 转:[置顶] 从头到尾彻底理解KMP(2014年8月22日版)
  7. Codeforce727B --- Bill Total Value(字符串处理 正则表达式)
  8. [前端 1] 使用frameset框架构建网页基本布局
  9. 1048 图的宽度优先遍历序列 c语言
  10. CXF错误:Unsupported major.minor version 51.0,java.lang.UnsupportedClassVersionErro
  11. HTML5实战与剖析之classList属性
  12. 在textarea的内容后面增加内容
  13. 如何在appconfig中配置服务的ip
  14. 【学习笔记】tensorflow文件读取
  15. Dnsmasq加速本地DNS请求
  16. 报错ORA-19809 ORA-19804
  17. 20145315何佳蕾《网络对抗》web基础
  18. Unity性能优化 – 脚本篇
  19. python get请求
  20. ARM的Trust Zone技术

热门文章

  1. 问题-[Delphi]用LoadLibrary加载DLL时返回0的错误
  2. javascript中的function对象
  3. IOS网络多线程-GCD
  4. Robotium学习笔记二
  5. iOS不勾选设置,实现某个界面强制横屏
  6. crm操作权限
  7. Could not find class '****', referenced from method #####
  8. 数据绑定(八)使用Binding的RelativeSource
  9. Java生成word文档
  10. careercup-位操作5.1