Problems with linking on FreeBSD-10

Montgomery-Smith, Stephen 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.

Thanks, Stephen



More information about the freebsd-ports mailing list