[Gc] Beginner's questions
dej at inode.org
Tue Apr 6 11:41:27 PDT 2004
On April 6, 2004 07:39 am, Atip Asvanund wrote:
> 1) The instruction said to include the header file, and link to the
> library file. I was wondering if I am doing it correctly in my makefile:
> -bash-2.05b$ more makefile
> queries: queries.cpp queries.h /new/usr2/xxx/gc/include/gc.h
> g++ -g -o3 queries.cpp /new/usr2/xxx/gc/lib/libgc.a -o
> I also include the gc.h file in my source.
You must include the gc.h in your source. You need not include it on the g++
You must ensure that g++ can see the directory in which gc.h is stored. If
this is not already the case on Linux, then you must use a -I directive on
the command line to indicate the directory in which gc.h resides. In your
case, you will need "-I/new/usr2/xxx/gc/include" on the compiler command
> 2) The instruction said specifically to run "make c++" after a regular
> make. I get the following error message, while the regular make and make
> install works. I am using c++, so will this cause a problem?
> -bash-2.05b$ make c++
> make: *** No rule to make target `c++'. Stop.
This step is required when building the collector itself. It is not required
when building your program.
If you are using C++, then you should include gc_cpp.h for a nicer interface
to the collector.
> 3) I am using STL for most of my complex datasets. Does STL work at all
> with Boehm? If it does, does it work automatically, or do I need to
> specify some special options. What will happen if I use the following
For STL, you must use special allocators. Basically, include "gc_allocator.h"
into your program, which defines the "gc_allocator" class. You then need to
specify this allocator when you create your containers, e.g.:
typedef std::vector<Foo*, gc_allocator<Foo*> > FooVector;
> 4) In C++ do I include gc.h or do I use a different file?
> 5) Is there a gentler introduction to Boehm with examples that I can use?
The documentation included with the collector is more than adequate. Your
problems seem to stem from inexperience with the standard compiler options
for g++ as well as proper usage of allocators for STL containers. You need
to master the basics before you go on to complex things.
For more background on g++ options, refer to any book on Unix/Linux C/C++
software development. You should pay attention to the concepts surrounding
separate compilation, as that will apply as your project grows more complex.
For more background on custom STL allocators, refer to Josuttis, "The C++
Standard Library: A Tutorial and Reference", ISBN 0-201-37926-0.
More information about the Gc