Hi Rene,
I believe I am doing this step correctly. Or, at least, what I am doing
works under
linux. For the user class I have
--------------------------------------------------
rootcint -f foodict.cxx -c -p -O -pipe -fPIC -I/usr/local/include/root
-I/usr/X11R6/include -I/usr/X11R6/include/X11 -DDARWIN
-I/usr/local/include/brat foo.h fooInclude.h fooLinkDef.h
c++ -DPACKAGE=\"foo\" -DVERSION=\"1.0\" -DONL_unix=1 -I. -I. -O -pipe
-fPIC -I/usr/local/include/root -I/usr/X11R6/include
-I/usr/X11R6/include/X11 -DDARWIN -I/usr/local/include/brat -ldl -c
foodict.cxx -Wp,-MD,.deps/foodict.TPlo -fno-common -DPIC -o foodict.lo
c++ -dynamiclib -flat_namespace -undefined suppress -o
.libs/libfoo.0.0.0.dylib foo.lo foodict.lo -ldl -ldl -lm -lc
-install_name /Users/sanders/lib/foo/libfoo.0.dylib
-compatibility_version 1 -current_version 1.0
--------------------------------------------------------
(I just noticed this was not in the make.log file that I posted. I had
previously created the dictionary file.)
Then, for the main TRint derived class:
----------------------------------------------------------------
rootcint -f BrRintDict.cxx -c -O -pipe -fPIC -I/usr/local/include/root
-I/usr/X11R6/include -I/usr/X11R6/include/X11 -DDARWIN
-I/usr/local/include/brat BrRint.h
c++ -ldl -o .libs/bratroot -Xlinker -bind_at_load -L/usr/local/lib/root
-lCore -lCint -lHist -lGraf -lGraf3d -lGpad -lTree -lRint -lPostscript
-lMatrix -lPhysics -lEG -lMySQL -lm -ldl -L/usr/local/lib -lBratDataAbc
-lBratDataParams -lBratModuleAbc -lBratModuleUtil -lBratManager
-lBratUtil -lBratDb -lBratDb -lBratDataCalib -lBratDataCentrality
-lBratDataGeant -lBratDataParams -lBratDataPid -lBratDataRaw
-lBratDataRdo -lBratDataTrack -lBratDataVertex -lBratModuleCalib
-lBratModuleCent -lBratModuleSimul -lBratModuleVisual -lBratModuleIO
-lBratModulePid -lBratModuleRaw -lBratModuleRdo -lBratModuleTrack
-lBratModuleVertex -lBratPackages -L/usr/X11R6/lib -lRint -lSM -lICE
-lX11 -lXpm BrRintMain.o BrRint.o BrRintDict.o -lRint -L.libs -lfoo -ldl
-ldl -lm
---------------------------------------------------------------
Above, the new user library is .libs/libfoo.dylib. I also have linked
in the various BRAT libraries (all created with
rootcint), however none of the library classes are available unless I
add code like:
#include "foo.h"
Foo foo;
in the main program.
Any other suggestions??
Regards,
Steve
On Friday, September 6, 2002, at 08:56 AM, Rene Brun wrote:
> Hi Stephen,
>
> If you want to call your BRAT classes interactively from CINT, your
> classes must be known to CINT via the dictionary created with rootcint.
> Are you running this step?
> See examples in Users Guide and in $ROOTSYS/test/Event
>
> Rene Brun
>
> On Fri, 6 Sep 2002, Stephen Sanders wrote:
>
>> Hi Damir,
>> I do successfully generate both the .dylib and .so library files. The
>> .so files load fine using
>> gSystem->Load("xxx") command, and I can successfully link to classes in
>> the .dylib libraries.
>> My problem (I think--since it doesn't work, I'm clearly missing some
>> important step!)
>> is somehow related to CINT not recognizing the global symbols in the
>> .dylib(??) files.
>> I can force things to work OK by creating instances of the user classes
>> in the TRint derived
>> main program. Unfortunate, the BRAT system has hundreds of classes and
>> so this is clearly not
>> a very attractive solution.
>>
>> Regards,
>> Steve
>>
>> On Friday, September 6, 2002, at 02:18 AM, Damir Buskulic wrote:
>>
>>> Hi,
>>>
>>> I had the same kind of problems. Apparently, one needs to generate TWO
>>> libraries for each one that was generated before. One for the symbols,
>>> one for the code.
>>>
>>> Can someone explain a little better why and how to do it properly ?
>>>
>>> I'm also still stuck to that kind of problems. ROOT works fine (so the
>>> problem seems solved for it) but my code doesn't work, while it does
>>> on
>>> all other platforms.
>>>
>>> Cheers
>>>
>>> Damir
>>>
>>> Stephen Sanders wrote:
>>>> Hi,
>>>> I am attempting to port the BRAT program of the BRAHMS
>>>> Collaboration at RHIC to Darwin. The entire BRAT system builds
>>>> fine,
>>>> but I'm
>>>> having trouble linking in the brat classes with CINT so that they
>>>> are available without doing an explicit gSystem->Load(). Instead,
>>>> I get errors of the sort shown below. I have set DYLD_LIBRARY_PATH to
>>>> include
>>>> the location of my shared libraries. I am also able to explicitly
>>>> load the user classes.
>>>> The root classes can be accessed fine.
>>>> The code and appropriately modified build instructions do work on
>>>> linux systems.
>>>> ----------------
>>>> brat [0] Foo * foo = new Foo() <---ON LINUX SYSTEMS THIS WORKS
>>>> Error: Symbol Foo is not defined in current scope
>>>> FILE:/var/tmp/tmp.2.012580_cint LINE:1
>>>> Error: Symbol Foo is not defined in current scope
>>>> FILE:/var/tmp/tmp.2.012635_cint LINE:1
>>>> Error: type Foo not defined FILE:/var/tmp/tmp.2.012635_cint LINE:1
>>>> Warning: Automatic variable Foo* foo allocated in global scope
>>>> FILE:/var/tmp/tmp.2.012635_cint LINE:1
>>>> Error: Undeclared variable Foo* foo FILE:/var/tmp/tmp.2.012635_cint
>>>> LINE:1
>>>> *** Interpreter error recovered ***
>>>> brat [1] gSystem->Load("foo") <----THIS WORKS
>>>> (int)0
>>>> brat [2] Foo * foo = new Foo("a","a")
>>>> a
>>>> -------------------------
>>>> If I start the TRint derived main program in gdb,
>>>> I am able to set breakpoints on the user class Foo,
>>>> but autocompletion does not return the argument lists:
>>>> [kunuc5:~/Documents/foo] sanders% gdb ~/bin/bratroot
>>>> This GDB was configured as "powerpc-apple-macos10".
>>>> Reading symbols for shared libraries .. done
>>>> (gdb) break main
>>>> Breakpoint 1 at 0x2854
>>>> (gdb) run
>>>> Starting program: /Users/sanders/bin/bratroot
>>>> [Switching to process 12624 thread 0x1603]
>>>> Reading symbols for shared libraries ................... done
>>>> Breakpoint 1, 0x00002868 in main ()
>>>> (gdb) break Foo::Foo
>>>> Breakpoint 2 at 0x10ce228
>>>> (gdb)
>>>> ---------------------------------------------------------------
>>>> To test the system, I've built a simple library libfoo with a single
>>>> class Foo. This
>>>> is linked to a TRint derived class BrRint as shown below: (I've
>>>> supplied links to the
>>>> actual programs.) Again, I've moved this to a linux system, commented
>>>> out the MODULE
>>>> stuff, and everything works as it should.
>>>> ----------------------------------------------------------------
>>>> AM_CPPFLAGS = -O -pipe -fPIC -I/usr/local/include/root
>>>> -I/usr/X11R6/include -I/usr/X11R6/include/X11
>>>> ROOTLIBS=-L/usr/local/lib/root -lCore -lCint -lHist -lGraf -lGraf3d
>>>> -lGpad -lTree -lRint -lPostscript -lMatrix -lPhysics -lm -ldl
>>>> XLIBS= -L/usr/X11R6/lib -lRint -lSM -lICE -lX11 -lXpm
>>>> LIBNAME =libfoo.la
>>>> MODULE =foo.la
>>>> pkglib_LTLIBRARIES = $(LIBNAME) $(MODULE)
>>>> pkginclude_HEADERS = "http://www.phsx.ukans.edu/~sanders/foo/foo.h"
>>>> libfoo_la_SOURCES = "http://www.phsx.ukans.edu/~sanders/foo/foo.cxx"
>>>> foodict.cxx
>>>> libfoo_la_LDFLAGS = -ldl -lm -R$(HOME)/Documents/foo/.libs
>>>> foo_la_SOURCES = $(libfoo_la_SOURCES)
>>>> foo_la_LDFLAGS = -module -Xlinker -bind_at_load $(ROOTLIBS)
>>>> -R$(HOME)/Documents/foo/.libs
>>>> bin_PROGRAMS = bratroot
>>>> bratroot_LDADD = -lRint libfoo.la
>>>> bratroot_LDFLAGS = -Xlinker -bind_at_load $(ROOTLIBS) $(XLIBS)
>>>> bratroot_SOURCES =
>>>> "http://www.phsx.ukans.edu/~sanders/foo/BrRintMain.cxx" \
>>>> "http://www.phsx.ukans.edu/~sanders/foo/BrRint.cxx"
>>>> "http://www.phsx.ukans.edu/~sanders/foo/BrRint.h" \
>>>> BrRintDict.h BrRintDict.cxx
>>>> CLEANFILES = *Dict.*
>>>> %dict.cxx %dict.h:%.h
>>>> rootcint -f $*dict.cxx -c -p $(AM_CPPFLAGS) $< $*Include.h
>>>> $*LinkDef.h
>>>> %Dict.cxx %Dict.h:%.h
>>>> rootcint -f $*Dict.cxx -c $(AM_CPPFLAGS) $<
>>>> -----------------------------------------------------------------------------------------------------------------------------------
>>>> The resulting Makefile is:
>>>> "http://www.phsx.ukans.edu/~sanders/foo/Makefile"
>>>> The log of the make operation is at :
>>>> "http://www.phsx.ukans.edu/~sanders/foo/make.log"
>>>> Any suggestions? Has anyone been successful getting someting like
>>>> this to work
>>>> under Darwin?
>>>> Thanks for any help...
>>>> Steve
>>>
>>>
>>>
>>> --
>>> =====================================================================
>>> | Damir Buskulic | Universite de Savoie/LAPP |
>>> | | Chemin de Bellevue, B.P. 110 |
>>> | Tel : +33 (0)450091600 | F-74941 Annecy-le-Vieux Cedex |
>>> | e-mail: buskulic@lapp.in2p3.fr | FRANCE |
>>> =====================================================================
>>> mailto:buskulic@lapp.in2p3.fr
>>
This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:51:08 MET