omniORB2.gif (2079 bytes)

omniORB2 for Linux

attlogo6876_dk.gif (2280 bytes)

sideHome.gif (2321 bytes) sideDownload.gif (2450 bytes) sideDocumentation.gif (2512 bytes) sideFAQ.gif (2344 bytes) sidePatch.gif (2543 bytes) sideSearch.gif (2403 bytes)
omniORB2 has been tested with the following software configuration:

Linux libc5 system:

  • Kernel 2.0.27
  • Gnu C++ 2.7.2.1
  • Binutils 2.7.0
  • Linux C Library 5.3.12
  • Linux C++ Library 2.7.1
  • Linuxthreads 0.5

Linux glibc-2 system:

  • Kernel 2.0.35
  • Egcs 1.1.1
  • Binutils 2.9.1.0.14
  • Linux C Library glibc-2.0.x

Notes on EGCS 1.1b

Previous versions of omniORB have been tested with EGCS 1.1b, and were largely sucessful. However version 1.1.1 includes several important bug fixes and it is strongly recommended that you upgrade to this version.

Problems with S.U.S.E Distributions

It has been reported that with some S.U.S.E distributions, the release fails to compile with an internal compiler error. The distribution apparently bundles gcc 2.7.2.3 so one would expect the release should compile. The exact cause of the problem is unknown.

Typo in /usr/include/sched.h

In some linux distributions, e.g. RedHat 4.1, there is a typo in /usr/include/sched.h which would cause an error when compiling omniORB2. If you see this error, apply the following patch:

** sched.h Thu May 22 13:49:34 1997 
--- sched.h.patched Thu May 22 13:49:47 1997
*************** *** 33,39 **** 
  extern int sched_getscheduler __P((pid_t __pid)); 
  extern int sched_yield __P((void)); 
  extern int sched_get_priority_max __P((int __policy)); 
! extern int sched_get_priority_min _P((int __policy)); 
  extern int sched_rr_get_interval __P((pid_t __pid, struct timespec *interval)); 
--- 33,39 ---- 
  extern int sched_getscheduler __P((pid_t __pid));
  extern int sched_yield __P((void));
  extern int sched_get_priority_max __P((int __policy)); 
! extern int sched_get_priority_min __P((int __policy)); 
  extern int sched_rr_get_interval __P((pid_t __pid, struct timespec *interval));
    

Gcc exception handling

omniORB2 uses C++ exceptions. By default, exception handling is not enabled in gcc 2.7.2. To compile programs that use omniORB2, the -fhandle-exceptions flag must be specified. Notice that optimization is not supported with -fhandle-exceptions.

By default, Run Time Type Identification (RTTI) is not supported in g++ 2.7.2. In other words, throws will only match on catch parameters of exactly the same types.

It is possible to enable RTTI support in gcc 2.7.2. To do so, the omniORB library must be modified to include <typeinfo>. Refer to g++ documentation for details.

omniORB2 has not been tested with gcc 2.8.0, which should resolve the above problems.

No shared library support

With gcc 2.7.2, it is not possible to create a C++ shared library with exception handling enabled. Therefore, only static libraries are provided. This problem is probably resolved in gcc 2.8.0.

Porting to other hardware platforms

omniORB2 has only been tested on x86 Linux. Theoretically, it will just compile with no change on other linux platforms. In practice, the success of a port depends largely on the quality of exception handling in gcc. On alpha Linux, gcc 2.7.2 fails to compile the omniORB2 library because of an internal compiler error. This bug is a show stopper with no work around. However, the g++ maintainers have asserted that the bug has been fixed in gcc 2.8.0, though this has yet to be verified.

Gcc 2.8.0

gcc 2.8.0 has been released. We have not tested omniORB2 with the compiler. It may be the case that gcc 2.8.0 will have the same problem with thread safe exception handling as egcs (see README.egcs). If that is the case, omniORB2 programs may crash randomly. One has to wait a bit longer for gcc to have thread safe exception or switch to egcs.

 

For comments, feedback, etc, please see the 'Keeping in touch' page.
Copyright 1999 - AT&T Laboratories Cambridge