
GNU链接脚本
文章平均质量分 52
task_struct
这个作者很懒,什么都没留下…
展开
-
RISC-V GCC默认链接脚本
RISC-V 链接脚本原创 2022-10-16 19:53:49 · 683 阅读 · 0 评论 -
GNU链接脚本(12) - 抛弃glibc依赖
原文:https://github.com/iDalink/ld-linker-script/tree/master/12%20%E6%8A%9B%E5%BC%83glibc%E4%BE%9D%E8%B5%961、目标上一节,我们已经体会到系统库的复杂。为了保持可控性,我们决定抛弃glibc,构建一个完全可控的应用程序。我们需要两个函数,puts和exit,分别实现日志输出和程序退出。2、系统调用应用程序调用系统服务称之为系统调用(system call),应用程序之间的函数调用称之为库调用转载 2021-02-03 22:26:20 · 406 阅读 · 0 评论 -
GNU链接脚本(11) - 构建可运行程序
原文:https://github.com/iDalink/ld-linker-script/tree/master/11%20%E6%9E%84%E5%BB%BA%E5%8F%AF%E8%BF%90%E8%A1%8C%E7%A8%8B%E5%BA%8F1、目标你可能已经注意到,我们前面自定义linker script编译的可执行均无法正常运行。其原因是现代系统有无数的细节需要小心处理。一方面是,printf是系统libc提供的函数,为了保证编译通过我们只是简单得把printf函数屏...转载 2021-02-03 22:24:17 · 450 阅读 · 0 评论 -
GNU链接脚本(10) - 表达式
原文:https://github.com/iDalink/ld-linker-script/tree/master/10%20Linker%20Scripts%E4%B8%AD%E7%9A%84%E8%A1%A8%E8%BE%BE%E5%BC%8F1、常量_fourk_1 = 4K;_fourk_2 = 4096;_fourk_3 = 0x1000;_fourk_4 = 10000o;2、符号名"SECTION" = 9;"with a space" = "also with转载 2021-02-03 22:19:49 · 223 阅读 · 0 评论 -
GNU链接脚本(09) - VERSION指令
原文:https://github.com/iDalink/ld-linker-script/tree/master/09%20VERSION%E6%8C%87%E4%BB%A41、符号导出版本符号导出版本在version script中指明.VER_1.1 { math_pow;};VER_1.2 { math_pow;} VER_1.1;2、函数别名绑定__asm__(".symver math_pow_old, ma...转载 2021-02-03 22:17:43 · 319 阅读 · 0 评论 -
GNU链接脚本(08) - PHDRS指令
原文:https://github.com/iDalink/ld-linker-script/tree/master/08%20PHDRS%E6%8C%87%E4%BB%A41、格式预览PHDRS{ name type [ FILEHDR ] [ PHDRS ] [ AT ( address ) ] [ FLAGS ( flags ) ] ;}ld默认一组phdrs。如果自定义了自己的PHDRS,那么默认的phdrs将会被屏蔽。FI...转载 2021-02-03 22:02:22 · 522 阅读 · 0 评论 -
GNU链接脚本(07) - MEMORY指令
原文:https://github.com/iDalink/ld-linker-script/tree/master/07%20MEMORY%E6%8C%87%E4%BB%A41、完整格式MEMORY { name [(attr)] : ORIGIN = origin, LENGTH = len … }2、attrattr 描述 R 只读 W 读写 X 可执行 A 可分配 I 初始 L 同I !转载 2021-02-03 21:37:04 · 678 阅读 · 0 评论 -
GNU链接脚本(06) - SECTIONS指令
原文:https://github.com/iDalink/ld-linker-script/tree/master/06%20SECTIONS%E6%8C%87%E4%BB%A41、指令预览*section* [address] [(type)] : [AT(lma)] [ALIGN(section_align) | ALIGN_WITH_INPUT] [SUBALIGN(subsection_align)] [constraint] { output-section转载 2021-02-03 21:33:26 · 1077 阅读 · 0 评论 -
GNU链接脚本(05) - 符号值分配
原文:https://github.com/iDalink/ld-linker-script/tree/master/05%20%E7%AC%A6%E5%8F%B7%E5%80%BC%E5%88%86%E9%85%8D1、简单符号值第一节已经对符号做了描述,并且提及链接脚本也是符号的产生原因之一。符号支持如下运算。symbol = expression ; symbol += expression ; symbol -= expression ; symbol *= expre...转载 2021-02-03 21:27:03 · 200 阅读 · 0 评论 -
GNU链接脚本(04) - 简要链接指令
原文:https://github.com/iDalink/ld-linker-script/tree/master/04%20%E7%AE%80%E8%A6%81%E9%93%BE%E6%8E%A5%E6%8C%87%E4%BB%A41、指定程序入口使用ENTRY指令指定程序入口。格式为如下。ENTRY(symbol)其它指定入口方式如下。使用命令行-e 参数 使用ENTRY(symbol)指令 平台相关定义,众多平台为start .text段...转载 2021-02-02 22:51:42 · 547 阅读 · 0 评论 -
GNU链接脚本(03) - 简要示例
1、测试示例这一小节我们演示linker script的简单用法。第一节中我们创建了一个测试用例,并编译连接出一个能够运行的可执行程序app。使用readelf命令,获取可执行程序的segment分配如下图。 $ readelf -l app Elf file type is DYN (Shared object file)Entry point 0x580There are 9 program headers, starting at offset ...转载 2021-02-02 22:46:58 · 210 阅读 · 0 评论 -
GNU链接脚本(02) - 格式
原文:https://github.com/iDalink/ld-linker-script/tree/master/02%20%E6%A0%BC%E5%BC%8F1、注释写法linker script使用/* */方式表达注释。2、文件名写法当包含文件时,你可以直接键入文件名。如果文件名包含特殊字符,需要使用引号包裹文件名。...转载 2021-02-02 22:39:09 · 115 阅读 · 0 评论 -
GNU链接脚本(01) - 基本概念
原文:https://github.com/iDalink/ld-linker-script/tree/master/01%20%E5%9F%BA%E6%9C%AC%E6%A6%82%E5%BF%B51、概述Linux编译产出文件种类包括目标文件、可执行文件、动态链接文件、目标归档文件。这些文件格式常为ELF格式。文件类型 英文名 扩展名 生成指令 目标文件 object file .o gcc -C ... 可执行文件 exec...转载 2021-02-02 22:35:23 · 339 阅读 · 0 评论