Problems with linking on FreeBSD-10
stephen at missouri.edu
Fri Jan 31 00:19:49 UTC 2014
I maintain the port math/sage. The port builds its own version of the
libreadline library. The port also uses lang/gcc instead of clang,
because the port needs Fortran.
The port is wanting to create a shared library called libR.so, which it
wants to link with the libreadline library it created itself. So it
issues this kind of command:
gcc46 -Wl,-rpath=path-of-newly-made-library -o libR.so -lreadline
I have left out most of the command for brevity.
Unfortunately the libR.so pulls in /lib/libreadline - the version that
comes with the base FreeBSD. I thought that -rpath flag was supposed to
tell the linker where to find the library. But it doesn't.
The failure is when using FreeBSD-10. With FreeBSD-8 it works great. I
also assume that gcc46 uses /usr/local/bin/ld instead of /usr/bin/ld,
since devel/binutils is a dependency of lang/gcc.
Can anyone help me? Is this a bug with FreeBSD? Or is there some extra
flag I can set with the linker to make it work? I have tried
-rpath-link and -z origin, but these were random guesses. and I don't
really know what I am doing.
More information about the freebsd-ports