Pregunta

Detecto esto usando 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)

Estoy confundido; de acuerdo con el manual, ld al principio debe intentar encontrar en la ruta -rpath-link .

¿Fue útil?

Solución

-rpath-link solo está documentado (en la página del comando man ld (1)) para afectar las bibliotecas compartidas que dependen de otras bibliotecas compartidas. Dado que está vinculando un ejecutable, se ignora o se trata como un simple -rpath. O tal vez significa que la ruta -rpath-link solo se usa para dependencias recursivas, pero la configura al vincular el ejecutable.

De todos modos, creo que no se está utilizando porque no tienes una biblioteca dependiendo de otra.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top