compilation-bundle/dwarf-compilation.base/contrib/libdwarf/README

80 lines
2.2 KiB
Plaintext

A build can be done via cmake, which is
new as of November 2016.
mkdir /tmp/builddir
cd /tmp/builddir
# Assuming the source tree in /a/b/code
cmake /a/b/code
make
Standard builds are done by configure/make as
described below.
BUILDING IN SOURCE TREE
To just build libdwarf and dwarfdump
if the source tree is in /a/b/libdwarf-1
one might do:
cd /a/b/libdwarf-1
./configure
make dd
#You may need to be root to do the following copy commands
cp dwarfdump/dwarfdump /usr/local/bin
cp dwarfdump/dwarfdump.conf /usr/local/lib
#The following is optional, not needed to run dwarfdump
#when doing the default build.
cp libdwarf/libdwarf.a /usr/local/lib
BUILDING OUT OF SOURCE TREE
Or one could create a new directory, for example,
mkdir /var/tmp/dwarfex
cd /var/tmp/dwarfex
/a/b/libdwarf-1/configure
make dd
In this case the source directory is not touched and
all objects and files created are under /var/tmp/dwarfex
NOTE: When building out of source tree the source tree
must be cleaned of any files created by a build
in the source tree. This is due to the way GNU Make
VPATH works.
For a simple build of libdwarf, and dwarfdump
and the other tools:
./configure
make
#Optionally: cp libdwarf/libdwarf.a <somewhere>
To build all the tools (including dwarfgen and
dwarfexample) use 'make all'. There are known
small compile-time issues with building dwarfgen on
MaxOSX and most don't need to build dwarfgen.
./configure
make all
By default configure compiles and uses libdwarf.a.
With
./configure --enabled-shared
both libdwarf.a and libdwarf.so
are built. The runtimes built will reference libdwarf.so.
With
./configure --enabled-shared --disable-nonshared
libdwarf.so is built and used; libdwarf.a is not built.
When ready to create a new source distribution do
./CPTOPUBLIC
./BLDLIBDWARF yyyymmdd
where that could be
./BLDLIBDWARF 20140131
as an example.
Sanity checking:
Recent gcc has some checks that can be done at runtime.
-fsanitize=address
-fsanitize=leak
-fsanitize=undefined
which are turned on here by --enable-sanitize at build time.
David Anderson. Updated November 30, 2016