Have you tried using the CVS version of libtool?  This seems to work
ok with the Sun Forte compiler.  Earlier versions of libtool are not
designed to work with C++.

Bob

On Thu, 28 Nov 2002, Ulrik Petersen wrote:

> Hello,
>
> libtool is great, but unfortunately it still does not
> work equally well on all platforms.  I have problems
> with building shared C++ libraries on the Sun Forte CC
> compiler, especially when using templates.  There are
> severel problems, all of which I will describe below.
>
> The Sun Forte compiler has problems when object files
> are moved around, which libtool does by default.  This
> is because the Sun Forte compiler stores template
> instances in separate files, along with information
> about which object files belong with which template
> instances.  Thus when object files are moved around
> (between $libdir and $objdir), the linker (which
> happens to be the compiler) does not know where to
> find the template instances, resulting in unresolved
> symbols.  There is a FAQ dealing with this at:
>
> http://wwws.sun.com/software/sundev/suncc/faqs/cpp.html#0q3
>
> Here is a (very dirty) sed script I use in my
> configure.in in order to make libtool work:
>
> s/compiler_o_lo="no"/compiler_o_lo="yes"/
> s%$show "$mv $output_obj $libobj"%\#%
> s%$show "$mv $libobj $obj"%\#%
> s%$show "$mv $output_obj $obj"%\#%
> s%$show "$mv $libobj $lo_libobj"%\#%
> s%$run $mv $output_obj $libobj%test "x" = "x"%
> s%$run $mv $libobj $obj%test "x" = "x"%
> s%$run $mv $output_obj $obj%test "x" = "x"%
> s%$run $mv $libobj $lo_libobj%test "x" = "x"%
> s%\*\.lo) libobjs="\$libobjs \$arg"%\*\.lo)
> libobjs="\$libobjs \$objdir/\$arg"%
>
> As you can see, this sed script solves three problems:
>
> 1) It sets compiler_o_lo to yes, even though
> aclocal.m4 believes it should be no.
>
> 2) It removes the lines that mv any object files.
>
> 3) It puts $objdir/ in front of all object files when
> linking.
>
> Also, as detailed in the Sun Forte C++ User's Guide,
> one should use CC -xar -o instead of ar and CC -g
> instead of ld when linking C++ libraries.  Otherwise,
> templates are not instantiated.
>
> Here is the code I use in my configure.in to
> accomplish this.  ISHOSTSUNCC is a variable I set
> myself.
>
> if test x$ISHOSTSUNCC = xyes; then
>   AR=CC;
>   AR_FLAGS="-xar -o";
>   LD=CC;
>   export AR AR_FLAGS LD
> fi
>
> dnl Invoke libtool
> AC_PROG_LIBTOOL
>
> Of course, one should not use the CC compiler as the
> linker/archiver when linking C libraries.  So there
> are some language-related complexities involved here.
>
> The Sun Forte C++ User's Guide can be found at:
>
> http://docs.sun.com/db/doc/806-7991
>
> The relevant sections are: Chapter 7 (especially
> 7.3.1), Chapter 16 (especially 16.2 and 16.3), Chapter
> 12.
>
> If you need any other information, please contact me
> off-list: [EMAIL PROTECTED]
>
> Best regards,
>
> Ulrik Petersen
> Emdros maintainer, <http://www.emdros.org/>
>
>
> =====
> --
> Ulrik Petersen, Denmark
>
> Beskyt din computer mod virus og misbrug! Læs mere i Yahoo! Sikkerhedscenter på 
>www.yahoo.dk/sikkerhedscenter
>
>
> _______________________________________________
> Libtool mailing list
> [EMAIL PROTECTED]
> http://mail.gnu.org/mailman/listinfo/libtool
>

======================================
Bob Friesenhahn
[EMAIL PROTECTED]
http://www.simplesystems.org/users/bfriesen



_______________________________________________
Libtool mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/libtool

Reply via email to