打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
【转】 揪出gcc默认使用的ld链接脚本
userphoto

2011.01.19

关注

揪出gcc默认使用的ld链接脚本

 首先声明不是讲lds语法的

  在  <<程序员的自我修养-链接装载与库>>一书中曾提到ld默认使用的链接脚本

  说默认在/usr/lib/ldscripts/下

  结果我找了半天没找到  我的系统是fedora 8

  find / -name *lds*  找不到 找script也找不到 晕了

  后来查了下发现可以用ld -verbose查看默认的lds

  输出如下:

  GNU ld version 2.19.51.0.14-34.fc12 20090722

  Supported emulations:

  elf_i386

  i386linux

  elf_x86_64

  using internal linker script:

  ==================================================

  /* Script for -z combreloc: combine and sort reloc sections */

  OUTPUT_FORMAT("elf32-i386", "elf32-i386",

  "elf32-i386")

  OUTPUT_ARCH(i386)

  ENTRY(_start)

  SEARCH_DIR("/usr/i686-redhat-linux/lib"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib");

  SECTIONS

  {

  /* Read-only sections, merged into text segment: */

  PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x08048000)); . = SEGMENT_START("text-segment",

  0x08048000) + SIZEOF_HEADERS;

  ........

  后面略

  这就奇怪了,那么这个lds到底在哪呢?

  我们用find /usr/* |xargs grep "Script for -z combreloc"看看

  结果 Binary file /usr/bin/ld matches 可见已经集成到ld中了

  readelf -P --string-dump=.rodata ld便可以找到

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
把共享库(SO)加载到指定的内存地址
程序编译链接运行时对库关系的探讨
OBJ文件格式分析工具: objdump, nm,ar
Linux中的ldd命令和pvs命令
GCC 编译的背后
Tiny C Compiler参考手册
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服