From: Brian G. <ge...@ai...> - 2004-11-20 20:02:27
|
On Fri, 19 Nov 2004, Richard Vaughan wrote: > On Nov 19, 2004, at 1:28 PM, Brian Gerkey wrote: > >> On this topic, if anybody could provide an example of how to use libtool >> to build a Player plugin, I'd be most appreciative. I suspect that >> the proper use of libtool is the right (i.e., platform-independent) >> way out of this linker mess. > > Here you go. The forthcoming Stage 2.0 is a library that works as a Player > plugin, or as a standalone simulation library for custom apps. These are the > relevant chunks from Stage's Makefile.in. The LDFLAGS are very carefully > chosen - it's easy to get these platform-dependent by mistake, but this > example works on Linux, Solaris and OS X: > > AM_CFLAGS = -Wall -I$(top_builddir)/replace @PLAYER_CFLAGS@ @GTK_CFLAGS@ > AM_CPPFLAGS = -Wall -I$(top_builddir)/replace @PLAYER_CFLAGS@ @GTK_CFLAGS@ > > lib_LTLIBRARIES = libstage.la > > libstage_la_SOURCES = \ > bitmap.c \ > gui.c \ > gui.h > (etc) > > libstage_la_LDFLAGS = -export-dynamic -version-info 0:0:0 > libstage_la_LIBADD = @GTK_LIBS@ Cool, thanks. Starting with that example, I've thrown together a makefile that uses libtool to build a Player plugin (and doesn't require an autotools project setup). Thanks to Richard, Player 1.6 already has support for loading libtool objects. Note that your .cfg file should reference the .la file, e.g.: driver ( name "exampledriver" plugin "exampledriver.la" provides ["position:0"] ) The makefile, which works on Linux, is attached. I've also checked it into CVS as player/examples/plugins/exampledriver/Makefile.libtool. Please give it a try, especially on non-Linux systems, and submit fixes and enhancements. In particular, it seems that you must pass -rpath <install-dir> to get libtool to build a shared object. My makefile sets <install-dir> to /tmp, which is completely arbitrary. brian. p.s. I have no idea how libtool interacts with cross-compilation... -- Brian P. Gerkey ge...@ai... Stanford AI Lab http://ai.stanford.edu/~gerkey |