题
我检测此使用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
路径。
解决方案
-rpath-link
仅记载(在LD(1)手册页),以影响依赖于其他共享库共享库。既然你链接的可执行文件,无论是它忽略了,或者它当作只是一个-rpath。或者,也许这意味着-rpath链接路径仅用于递归的依赖,但你链接可执行文件时设置。
无论如何,我认为它没有被使用,因为你依赖于另外一个库没有做。
不隶属于 StackOverflow