【问题标题】:Why doesn't ld honor the '-rpath-link' option?为什么 ld 不尊重 '-rpath-link' 选项?
【发布时间】:2010-12-21 22:52:54
【问题描述】:

我使用 strace 检测到这一点:

8480  execve("/usr/lib/gcc-lib/i486-slackware-linux/3.3.4/../../../../i486-slackware-linux/bin/ld", 
[   "/usr/lib/gcc-lib/i486-slackware-linux/3.3.4/../../../../i486-slackware-linux/bin/ld", 
    ...
    "-L/home/bjack/lib", 
    ...
    "-rpath-link", "/root/src/firmware/Bj-bg/ab-BJ-gameprom-modules/src/dispatcher/logic", 
    ...
    "-lgame_std", "-lygor", "-ldl", 
    "--rpath", "/home/bjack/lib", 
    "-lgcc", "--as-needed", "-lgcc_s", "--no-as-needed", "-lc", "-lgcc", "--as-needed", "-lgcc_s", "--no-as-needed", 
    "/usr/lib/gcc-lib/i486-slackware-linux/3.3.4/crtend.o", 
    "/usr/lib/gcc-lib/i486-slackware-linux/3.3.4/../../../crtn.o"
], [/* 26 vars */]) = 0

8480  open("/home/bjack/lib/libgame_std.so", O_RDONLY) = 12
8480  open("/home/bjack/lib/libygor.so", O_RDONLY) = -1 ENOENT (No such file or directory)
8480  open("/home/bjack/lib/libygor.a", O_RDONLY) = -1 ENOENT (No such file or directory)

我很困惑;根据手册 ld 首先必须尝试在-rpath-link 找到路径。

【问题讨论】:

    标签: linux linker elf ld


    【解决方案1】:

    -rpath-link 仅记录在(在 ld(1) 手册页中)以影响依赖于其他共享库的共享库。由于您正在链接可执行文件,因此它要么被忽略,要么被视为另一个 -rpath。或者可能意味着 -rpath-link 路径仅用于递归依赖,但您在链接可执行文件时确实设置了它。

    无论如何,我认为它没有被使用,因为您没有一个依赖于另一个的库。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-05
      • 2011-06-22
      • 2019-01-18
      • 1970-01-01
      • 1970-01-01
      • 2013-10-17
      • 2015-03-14
      • 2021-02-27
      相关资源
      最近更新 更多