• 常用的工具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更好的优化编译、连接,当然整个编译、连接过程会更慢。

  • 相关阅读:
    python读取配置文件之.ini后缀文件
    Qt界面中打开图片的一个小bug
    C++指针与数组、函数、动态内存分配
    使用VS调试安卓Unity应用
    VS2017调试Unity时遇到的“未指定错误”解决方法记录
    【5】用vector进行直接插入排序
    【4】数独(Sudoku Killer)(深度优先遍历)
    【3】素数环问题(递归、搜索)
    【2】展开字符串(栈、递归)
    【1】简单计算器(栈)
  • 原文地址:https://www.cnblogs.com/yuankaituo/p/4245708.html
Copyright © 2020-2023  润新知