1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
original version by: Nikos Drakos, CBLU, University of Leeds
* revised and updated by: Marcus Hennecke, Ross Moore, Herb Swan
* with significant contributions from:
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>Compilation Consistency is Key</TITLE>
<META NAME="description" CONTENT="Compilation Consistency is Key">
<META NAME="keywords" CONTENT="users_guide">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
<LINK REL="STYLESHEET" HREF="users_guide.css">
<LINK REL="previous" HREF="node210.html">
<LINK REL="up" HREF="node209.html">
<LINK REL="next" HREF="node212.html">
</HEAD>
<BODY >
<DIV CLASS="navigation"><!--Navigation Panel-->
<A NAME="tex2html3864"
HREF="node212.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html3858"
HREF="node209.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html3854"
HREF="node210.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html3860"
HREF="node14.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<A NAME="tex2html3862"
HREF="node317.html">
<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html3865"
HREF="node212.html">Appendices</A>
<B> Up:</B> <A NAME="tex2html3859"
HREF="node209.html">Lessons Learned</A>
<B> Previous:</B> <A NAME="tex2html3855"
HREF="node210.html">Introduction</A>
<B> <A NAME="tex2html3861"
HREF="node14.html">Contents</A></B>
<B> <A NAME="tex2html3863"
HREF="node317.html">Index</A></B>
<BR>
<BR></DIV>
<!--End of Navigation Panel-->
<H1><A NAME="SECTION04320000000000000000">
Compilation Consistency is Key</A>
</H1>
<P>
<SPAN CLASS="textbf"><SPAN CLASS="textit">Steve Smith, 24 September 2001</SPAN></SPAN>
<P>
Basically "be consistent" is the biggest lesson we found.
<P>
When compiling C++ codes, you may have conflicts if you use different
compile options. Under KCC we found -no_exceptions caused problems if
parts were compiled with/without the flag.
There are most likely other compile flags which turn features on/off
which would cause similar problems.
This caused a core dump immediately when core file was
loaded. This is somewhat obvious but if you are linking together several
different codes from a variety of developers you need to examine the
compile flags very carefully. This problem is probably more likely with
C++ due to the greater number of code generation options (e.g. RTTI,
exceptions etc).
<P>
A much more subtle problem occurred when we had a C shared library which
called functions in a C++ shared library. We initially used gcc to create
the C shared library and KCC to create the C++ shared library. The
application would core dump when a dynamic cast was attempted. This was
solved by using the "cc" compiler wrapper that is part of the KCC
distribution (which uses the native "cc"). So you need to be aware of not
only what is in your .so and how it is compiled but all the .so's that you
are using.
<P>
If you have several versions of a library, say during a debugging process,
make sure you are using the correct versions of things. The "ldd" command
is very useful for making sure you getting the shared libraries that you
think you should be linking to. Along these lines, keep your
LD_LIBRARY_PATH as simple as possible when debugging.
<P>
In retrospect this does not look like a large number of problems, but
figuring out the second problem took a long time since I focused on how the
C++ library was being created rather than where the real problem was being
introduced. It wasn't until after I had exhausted a long list of other
potential conflicts that I started messing with the C library compilation.
<P>
<DIV CLASS="navigation"><HR>
<!--Navigation Panel-->
<A NAME="tex2html3864"
HREF="node212.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html3858"
HREF="node209.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html3854"
HREF="node210.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html3860"
HREF="node14.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<A NAME="tex2html3862"
HREF="node317.html">
<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html3865"
HREF="node212.html">Appendices</A>
<B> Up:</B> <A NAME="tex2html3859"
HREF="node209.html">Lessons Learned</A>
<B> Previous:</B> <A NAME="tex2html3855"
HREF="node210.html">Introduction</A>
<B> <A NAME="tex2html3861"
HREF="node14.html">Contents</A></B>
<B> <A NAME="tex2html3863"
HREF="node317.html">Index</A></B> </DIV>
<!--End of Navigation Panel-->
<ADDRESS>
<br><br>babel-0.10.2<br>users_guide Last Modified 2005-03-23<br><br><a href="http://www.llnl.gov/CASC/components">http://www.llnl.gov/CASC/components</a><br><a href="mailto:components@llnl.gov">components@llnl.gov</a>
</ADDRESS>
</BODY>
</HTML>
|