Date: Thu, 05 Oct 2006 13:58:18 -0500 From: Jeffrey Horner <jeff.horner@vanderbilt.edu> To: freebsd-hackers@freebsd.org Subject: Behavior of run-time linker on 6.1-RELEASE Message-ID: <452555CA.10309@vanderbilt.edu>
next in thread | raw e-mail | index | archive | help
Hello all,
I'll apologize up front if my issue is not appropriate for this list or
is answered elsewhere, but I thought I'd come straight to the source...
I've noticed that setting the RPATH of a binary will help find libraries
that the binary has been linked against, but the RPATH of the binary is
ignored when a library itself is linked to another library. Is this
expected behavior?
Below is a demonstration of the behavior:
hornerj@biostatbsd ~/testrtl
$ cat main.c
#include <stdio.h>
void print_hello_lib1(void);
int main(int argc, char **argv){
printf("hello from main\n");
print_hello_lib1();
}
hornerj@biostatbsd ~/testrtl
$ cat lib1.c
#include <stdio.h>
void print_hello_lib2(void);
void print_hello_lib1(void){
printf("hello from lib1\n");
print_hello_lib2();
}
hornerj@biostatbsd ~/testrtl
$ cat lib2.c
#include <stdio.h>
void print_hello_lib2(void){
printf("hello from lib2\n");
}
hornerj@biostatbsd ~/testrtl
$ make clean
rm *.o *.so runmain
hornerj@biostatbsd ~/testrtl
$ make
gcc -c main.c
gcc -fPIC -c lib2.c
gcc -shared -Wl,-soname,lib2.so -o lib2.so lib2.o
gcc -fPIC -c lib1.c
gcc -shared -Wl,-soname,lib1.so -o lib1.so lib1.o lib2.so
gcc -L. -l1 -Wl,-rpath,`pwd` -o runmain main.o
hornerj@biostatbsd ~/testrtl
$ ./runmain
/libexec/ld-elf.so.1: Shared object "lib2.so" not found, required by
"lib1.so"
$ gcc -v
Using built-in specs.
Configured with: FreeBSD/i386 system compiler
Thread model: posix
gcc version 3.4.4 [FreeBSD] 20050518
So, I realize I can overcome this by setting the RPATH of lib1.so, but I
just wanted to make sure that this is expected (since on another
platform that's not necessary).
Thanks in advance,
Jeff
--
http://biostat.mc.vanderbilt.edu/JeffreyHorner
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?452555CA.10309>
