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

  • 相关阅读:
    对html与body的一些研究与理解
    关于文字内容溢出用点点点(...)省略号表示
    CSS3中border-image属性详解
    从TCP协议的原理来谈谈rst复位攻击
    关于Oracle中sysoper这个系统权限的问题
    翻翻git之---有用的欢迎页开源库 AppIntro
    椒盐噪声
    Codeforces Beta Round #1 A. Theatre Square
    log4j:WARN Please initialize the log4j system properly解决的方法
    微信平台开发——日历服务
  • 原文地址:https://www.cnblogs.com/yuankaituo/p/4245708.html
Copyright © 2011-2022 走看看