代码之家  ›  专栏  ›  技术社区  ›  vitaly.v.ch

为什么不接受“-rpath link”选项?

  •  2
  • vitaly.v.ch  · 技术社区  · 15 年前

    我用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)
    

    我很困惑,根据说明书,首先必须设法找到 -rpath-link 路径。

    1 回复  |  直到 14 年前
        1
  •  3
  •   Peter Cordes    15 年前

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

    不管怎样,我认为它没有被使用,因为你没有一个图书馆依赖另一个。