tng and shared libs

Elrond Elrond at
Thu Mar 2 12:02:13 GMT 2000

On Thu, Mar 02, 2000 at 08:51:38AM +1100, Michael Ju. Tokarev wrote:
> Tim Potter wrote:
> > 
> > Jean Francois Micouleau writes:
> > 
> > > I'm required to run make install and use /usr/local/samba/bin/rpcclient
> > > instead. why ?
> > > I want to compile and run the binaries in the build directory.
> > 
> > Try $SAMBA_SRC/bin/.libs/rpcclient which is the non shell-script
> > version (i.e dynamically linked) of rpcclient.  Also useful for
> > running gdb on.  (-:
> > 
> But do not forget to set LD_LIBRARY_PATH to place where libraries
> was _built_, e.g.
>   LD_LIBRARY_PATH=`pwd`/lib/.libs:`pwd`/smblib/.libs bin/.libs/rpcclient
> or you risk that it crashes, as it will find (if it will!) .so's from
> previous _installation_, e.g. in /usr/lib, but those probably not that
> needed...  This is what exactly do wrappers in bin, e.g. bin/rpcclient

Yes and no.

Unless you have no installed libraries, it will always use
the installed libraries... The paths to the libraries are
hardcoded into the binaries, so the binary finds them even,
if they're in places that the system's dynamic linker
doesn't know about by default (/etc/ on Linux).

If you need to run gdb on it, do the following:

$ bin/rpcclient
(this will give you the help, but also compile a version,
that hasn't got the paths hardcoded)
$ export LD_LIBRARY_PATH=`pwd`/bin/.libs
$ gdb bin/.libs/lt-rpcclient

The "official" way to do this is something like this:

	./libtool gdb bin/rpcclient


	./libtool --mode=execute gdb bin/rpcclient

The later form is useful, where gdb isn't realy called gdb
and libtool so can't guess, that you want to run a debugger
on your binary. You can even do this:

	./libtool --mode=execute file bin/rpcclient


More information about the samba-technical mailing list