• 常用的工具GCC GDB Make Makefile


    系统调用
    系统调用是操作系统提供给外部应用程序的一组特殊的接口。
    应用程序通过这组特殊“接口”来获得操作系统内核提供的服务。
    在 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更好的优化编译、连接,当然整个编译、连接过程会更慢。

  • 相关阅读:
    Oracle数据库管理
    Oracle——范式
    GUID
    java课上知识点整理—语句
    java课上知识点整理—java代码结构、标识符、数据类型、运算符
    使用css实现时间轴
    超简单的轮播实现
    第一个vue示例-高仿微信
    12. thymeleaf中资源相对路径的解决
    11. 将博客部署到tomcat上
  • 原文地址:https://www.cnblogs.com/yuankaituo/p/4245708.html
Copyright © 2020-2023  润新知