首页 > 其他分享 >静态链接

静态链接

时间:2023-04-02 14:12:05浏览次数:32  
标签:汇编 gcc 静态 hello 编译 include 链接

gcc编译程序的时候可以分为四个部分:

 

 

 (来自于<<程序员的自我修养>>)

  1. 预处理(Prepressing)
  2. 编译(Compilation)
  3. 汇编(Assembly)
  4. 链接(Linking)

预编译阶段:

  

gcc -E hello.c -o hello.i

 

  主要工作为

  • 展开所有的宏定义,删除#define
  • 处理所有的条件预编译指令,如#if、#ifndef等
  • 处理#include,把头文件的代码复制到#include出,且是递归进行,也就是#include过来的里面可能还需要#include,所以需要加#ifndef来防止重复
  • 删除所有的注释
  • 添加行号和文件标识符
  • 保留所有的#pragma编译器指令,编译器要使用他们

编译过程:

  

gcc -S hello.i -o hello.s

 

  把预处理完之后的文件进行一系列的词法分析、语法分析、语义分析以及优化生成相应的汇编代码文件。

汇编过程:

gcc -c hello.s -o hello.o

  将汇编代码转换为机器可以执行的指令

链接过程:

  

标签:汇编,gcc,静态,hello,编译,include,链接
From: https://www.cnblogs.com/hailanben/p/17280378.html

相关文章

  • 由于链接地址长度过长引起的”HTTP Error 400. The request URL is invalid”错误解决
    网站中,设计了一个批量搜索的功能,用户可以输入多个关键词进行批量查询搜索,但不出意外的话还是出意外了,有些用户可能会输入N多个关键词,我为了性能等考虑,会限制个数,比如每次批量查询仅限50个以内,但还是有意外发生,有些关键词可能会很长,即会引发”HTTPError400.TherequestURLisi......
  • 爬虫实战(一)爬取静态页面数据
    前言 我们以一个静态网站作为案例进行练习,网站链接为:https://ssr1.scrape.center/,这个网站里面包含一些电影信息。网站首页如下图所示:          我们点击其中一部电影,会进入该电影的详情页面,如下图所示:我们需要爬取的信息为每部电影的名称、封面、类别、......
  • 【Linq】 左连接、右连接、内链接
    左外部联接可以看到和直接内连接的join差距在多了into,把可能为空的那个集合(表)放到一个集合,然后再对接进行DefaultIfEmpty(),再从这个结果中去取   stocksinfo表格   packetassociationstocks表格实现 stocksinfo表格和packetassociationstocks表格的左外......
  • go创建文件的软链接,不支持windows
    funcmain(){err:=os.Symlink("/data/da","/home/go/da")iferr!=nil{fmt.Println(err)//即使是错误也不退出}err=os.Remove("/home/go/da")iferr!=nil{fmt.Println("/home/go/dafileisremove",......
  • idea怎么获取静态文件路径
    1、非spring项目和普通项目通用方法:Stringpath=Thread.currentThread().getContextClassLoader().getResource("cc/aa.txt").getPath();  2、spring项目可以用spirng自带的ResourceUtilsFilefile=ResourceUtils.getFile("classpath:note/aa.txt");......
  • chatGPT----链接大全
      OpenAI:https://openai.com/blog/chatgpt/百度文心:https://wenxin.baidu.com/CSDN(调用text-davinci-003模型):https://so.csdn.net/so/chatNewBing:https://www.bing.com/newChatGPT官网:https://chat.openai.comChatGPT注册:https://ata.alibaba-inc.com/articles/253211......
  • MSF实战免杀过静态:ShellCode加花指令
    分析MSF的ShellCode1.Hash寻找系统API函数由于ShellCode是没有PE结构的,无法通过导入表来调用系统的API函数,因此,这部分是一个通用的API调用函数,它可以根据给定的哈希值查找并调用相应的API。在查找API时,它会遍历已加载模块的列表以及每个模块的导出地址表。这个函数在Shellcode中......
  • 创建链接并添加边框
     可以在<li>or<a>上添加text-align:center 样式来让链接居中。可以在 border <ul>上添加 border 属性来让导航栏有边框。如果要在每个选项上添加边框,可以在每......
  • A星融合DWA的路径规划算法,可实现静态避障碍及动态避障
    A星融合DWA的路径规划算法,可实现静态避障碍及动态避障,代码注释详细,matlab源码YID:4525679980340317......
  • 单体架构中静态资源访问不到的处理
      importlombok.extern.slf4j.Slf4j;importorg.springframework.context.annotation.Configuration;importorg.springframework.web.servlet.config.annotation.......