Well that is handy to know. Seems to do the trick. Thanks, Nate So, now how can I get scons to build the gzstream library when you specify a static library target?
On Fri, Aug 7, 2009 at 3:44 PM, nathan binkert<[email protected]> wrote: > I think this is because of the ordering on the command line. If I > recall correctly, when two libraries depend on each other, the > providing library needs to be listed *after* the consuming library. > So you should put gzstream after m5. > > This is because with static libs linked with -l, the linker only takes > unresolved symbols that it knows about from the library. If you were > to link in the library as an object, i.e. full path with .a like > you're linking libmemory.a, then this doesn't happen. > > Nate > > On Fri, Aug 7, 2009 at 12:20 PM, Derek Hower<[email protected]> wrote: >> Command: >> >> g++ -o bochs -I/u/d/r/drh5/mfacet/rocks >> -I/u/d/r/drh5/mfacet/rocks/bochs >> -I/u/d/r/drh5/mfacet/rocks/gem5/src/mem/ruby -DBX_WITH_RUBY=1 >> -DBX_241=1 -g -pg -O2 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES >> -I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT >> -DBX_SHARE_PATH=\"/usr/local/share/bochs\" logio.o main.o config.o >> load32bitOShack.o pc_system.o osdep.o plugin.o crc.o >> -I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT -Wl,--export-dynamic >> -L/u/d/r/drh5/mfacet/rocks/gem5/build/LIBRUBY_MOESI_CMP_directory/../gzstream >> -L/u/d/r/drh5/mfacet/rocks/gem5/build/LIBRUBY_MOESI_CMP_directory >> iodev/libiodev.a cpu/libcpu.a memory/libmemory.a gui/libgui.a >> disasm/libdisasm.a ../bx_ruby_interface/libinstrument.a fpu/libfpu.a >> -L/usr/lib64 -lSM -lICE -lX11 -lXpm -lSDL -lncurses -lgzstream >> -lm5_prof -lpthread -lreadline -ltermcap -lm >> >> Errors: >> >> /u/d/r/drh5/mfacet/rocks/gem5/build/LIBRUBY_MOESI_CMP_directory/libm5_prof.a(Tracer.po): >> In function `Tracer::stopTrace()': >> /afs/cs.wisc.edu/p/multifacet/users/drh5/gem5/build/LIBRUBY_MOESI_CMP_directory/mem/ruby/recorder/Tracer.cc:95: >> undefined reference to `gzstreambase::close()' >> /u/d/r/drh5/mfacet/rocks/gem5/build/LIBRUBY_MOESI_CMP_directory/libm5_prof.a(Tracer.po): >> In function `ogzstream::open(char const*, int)': >> /afs/cs.wisc.edu/p/multifacet/users/drh5/gem5/build/gzstream/gzstream.hh:111: >> undefined reference to `gzstreambase::open(char const*, int)' >> /u/d/r/drh5/mfacet/rocks/gem5/build/LIBRUBY_MOESI_CMP_directory/libm5_prof.a(Tracer.po): >> In function `Tracer::stopTrace()': >> >> ...etc, etc >> >> -Derek >> >> On Fri, Aug 7, 2009 at 2:10 PM, nathan binkert<[email protected]> wrote: >>>>>> How can I make it compile gzstream? >>>>> There should be a libgzstream.a in build/gzstream/libgzstream.a. >>>>> You'll have to specify that in your final link stage along with >>>>> -lm5_foo >>>> >>>> Yes, there should, but theres not. If you build the dynamic library >>>> libgzstream.a gets built, but when you build the static library this >>>> is the contents of build/gzstream: >>>> >>>> >>>> ale-01:rocks (64)% ls gem5/build/gzstream/ >>>> gzstream.cc@ gzstream.hh@ SConscript@ >>>> >>>> I also built the dynamic m5 library so that libgztream.a would be >>>> created, but linking against it doesn't fix the problem. >>> what is the error message you get and what is your linker command line? >>> >>> Nate >>> _______________________________________________ >>> m5-dev mailing list >>> [email protected] >>> http://m5sim.org/mailman/listinfo/m5-dev >>> >> _______________________________________________ >> m5-dev mailing list >> [email protected] >> http://m5sim.org/mailman/listinfo/m5-dev >> >> > _______________________________________________ > m5-dev mailing list > [email protected] > http://m5sim.org/mailman/listinfo/m5-dev > _______________________________________________ m5-dev mailing list [email protected] http://m5sim.org/mailman/listinfo/m5-dev
