[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
libtool for C++
From: |
Steve M. Robbins |
Subject: |
libtool for C++ |
Date: |
Fri, 25 Jan 2002 10:51:14 -0500 |
User-agent: |
Mutt/1.3.27i |
Hello,
The libtool manual suggests strongly that one not use it
for C++ libraries.
Is this section of the document up-to-date with the stable
release of libtool? CVS libtool?
-------------------- from libtool manual ---------------------
11.1 Writing libraries for C++
Creating libraries of C++ code should be a fairly straightforward
process, because its object files differ from C ones in only three
ways:
1.Because of name mangling, C++ libraries are only usable by
the C++ compiler that created them. This decision was made
by the designers of C++ in order to protect users from
conflicting implementations of features such as constructors,
exception handling, and RTTI.
2.On some systems, the C++ compiler must take special actions
for the dynamic linker to run dynamic (i.e., run-time)
initializers. This means that we should not call `ld' directly to
link such libraries, and we should use the C++ compiler
instead.
3.C++ compilers will link some Standard C++ library in by
default, but libtool does not know which are these libraries, so
it cannot even run the inter-library dependence analyzer to
check how to link it in. Therefore, running `ld' to link a C++
program or library is deemed to fail. However, running the
C++ compiler directly may lead to problems related with
inter-library dependencies.
The conclusion is that libtool is not ready for general use for C++
libraries. You should avoid any global or static variable
initializations that would cause an "initializer element is not
constant" error if you compiled them with a standard C compiler.
There are other ways of working around this problem, but they are
beyond the scope of this manual.
Furthermore, you'd better find out, at configure time, what are the
C++ Standard libraries that the C++ compiler will link in by
default, and explicitly list them in the link command line.
Hopefully, in the future, libtool will be able to do this job by itself.
-----------------------------------------------------------------
>From this section, it is unclear whether libtool uses the C++
compiler or "ld" to do the linking. If the former, then it sounds
like the remaining hurdle (from #3) is to discover with which
standard libraries the compiler is linking. Is this accurate?
-Steve
--
by Rocket to the Moon,
by Airplane to the Rocket,
by Taxi to the Airport,
by Frontdoor to the Taxi,
by throwing back the blanket and laying down the legs ...
- They Might Be Giants
- libtool for C++,
Steve M. Robbins <=