C++ Compilation problems troubleshooting |
Category: |
C++
Purpose: |
To provide suggestions for setting up C++ compilers for use with ObjecTime
Intended Audience: |
Those using C++ as an ObjecTime development language
Applicable to: |
All Versions
Description: |
Check to see that $CC is pointing to the correct binary
CenterLine will pick up libraries from an environment variable called Libraries. This may bring in unexpected libraries. Note that the MTV SL/1 configuration also uses this environment variable.
When CenterLine is not configured at installation to find Solaris dynamic libraries, actors will fail to initialize and will cause an RTS exception: `actor behavior is not incarnated'. The system log may get the message: `Cannot connect socket to C++ executable'. If you do an ldd on the actor executable, you'll get something like `libC.so.3.x => (not found)' in the output.
A workaround within ObjecTime with Solaris 2.x is to add the following link option to the compiler setup: "-Rlibrary_path", where library_path is
$YOUR_CENTERLINE_INSTALLATION_DIRECTORY/sparc-solaris2/lib/a1.
When the Local Name Space flag is reset, attempts to declare OT base classes such as Integer, Character, Boolean, etc., without an RT.. prefix can result in obscure syntax errors in code generated for actor variables (particularly when there are actor-level include files). It is recommended that the RT.. versions of the base classes always be used. Otherwise, the Local Name Space flag MUST be set and the user must ensure that no external symbols collide with the base classes.
Link errors due to undefined symbols beginning with FSM... are likely due to libraries created using one version of a compiler with another version of of the compiler and linker. Change the compilation options to invoke the correct version. Note that external code must be recompiled to link properly, also.
Limitations: |
None
See also: |
None
Copyright © 1999, ObjecTime Limited. |