libtool
[Top][All Lists]
Advanced

[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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]