omniORB 3 has been tested on FreeBSD 4.0.
For FreeBSD 3.2, the following information may be useful.
This information is provided by Andre Fornacon.
If you have questions regarding omniORB on FreeBSD send them to [email protected].
I compiled omniORB 2.7.1 on a FreeBSD 3.2 (RELEASE) system using the pthreads from libc , gnu make and egcs 1.1.2.
the config file for FreeBSD builds:
to build applications with omniORB on FreeBSD use:
CXXFLAGS = -D_REENTRANT -D_THREAD_SAFE
CXXFLAGS += -D__x86__ -D__freebsd__ -D__OSVERSION__=3
CXXFLAGS += -I<YOUR_OMNIORB_INSTALL_DIRECTORY>/include
for dynamic linked binaries:
LDFLAGS = -L<YOUR_OMNIORB_DIRECTORY>/lib/x86_freebsd_3.2
LDFLAGS += -lomniORB2 -lomniDynamic2 -ltcpwrapGK -lomnithread
LDFLAGS += -Wl,-rpath,<YOUR_OMNIORB_DIRECTORY>/lib/x86_freebsd_3.2
for static linked binaries:
LDFLAGS = -L/lib/x86_freebsd_3.2
LDFLAGS += -Wl,-Bstatic
LDFLAGS += -lomniORB2 -lomniDynamic2 -ltcpwrapGK -lomnithread
LDFLAGS += -Wl,-Bdynamic
Note!link with the -lpthread flag
During the port I ran into the following problems:
- fcntl.h doesn't define O_SYNC, so i used O_FSYNC instead
- omniORB-2.7.1/src/appl/omniNames/log.cc
- omniORB-2.7.1/src/appl/omniNames/omniNames.cc
- need to include unistd.h and sys/wait.h on freebsd in
- omniORB-2.7.1/src/tool/omniidl2/driver/drv_fork.cc
- omniORB-2.7.1/src/tool/omniidl2/driver/drv_preproc.cc
- stock egcs 1.1.2 doesn't support the FreeBSD specific -pthread linking flag as the supplied gcc (2.7.2) does. just using -lc_r results into binaries linked against libc_r and libc. 'cause libc_r comes first it may work but isn't a good idea IMHO. so i modified the egcs-1.1.2/gcc/config/i386/freebsd-elf.h file the diff is attached below. apply it and rebuild egcs. [i rename the compiler drivers from gcc and g++ to egcs and egcs++ just to make sure i don't use the supplied system gcc/g++]
--- /src/egcs-1.1.2/gcc/config/i386/freebsd-elf.h.orig Wed Mar 17 20:39:58 1999
------------ begin freebsd 3.2 egcs pthread patch ----------------
+++ /src/egcs-1.1.2/gcc/config/i386/freebsd-elf.h Sat Jun 12 14:19:19 1999
@@ -145,26 +145,17 @@
#define WCHAR_TYPE_SIZE BITS_PER_WORD
#undef CPP_PREDEFINES
-#define CPP_PREDEFINES "-Di386 -Dunix -D__ELF__ -D__FreeBSD__ -Asystem(unix) -Asystem(FreeBSD) -Acpu(i386) -Amachine(i386)"
+#define CPP_PREDEFINES "-Di386 -Dunix -D__ELF__ -D__FreeBSD__=3 -Asystem(unix) -Asystem(FreeBSD) -Acpu(i386) -Amachine(i386)"
#undef CPP_SPEC
#define CPP_SPEC "%(cpp_cpu) %{fPIC:-D__PIC__ -D__pic__} %{fpic:-D__PIC__ -D__pic__} %{posix:-D_POSIX_SOURCE}"
#undef LIB_SPEC
-#if 1
/* We no longer link with libc_p.a or libg.a by default. If you
* want to profile or debug the C library, please add
* -lc_p or -ggdb to LDFLAGS at the link time, respectively.
*/
-#define LIB_SPEC \
- "%{!shared: %{mieee-fp:-lieee} %{p:-lgmon} %{pg:-lgmon} \
- %{!ggdb:-lc} %{ggdb:-lg}}"
-#else
-#define LIB_SPEC \
- "%{!shared: \
- %{mieee-fp:-lieee} %{p:-lgmon -lc_p} %{pg:-lgmon -lc_p} \
- %{!p:%{!pg:%{!g*:-lc} %{g*:-lg}}}}"
-#endif
+#define LIB_SPEC "%{!shared:%{!pg:%{!pthread:%{!kthread:-lc}%{kthread:-lpthread -lc}}%{pthread:-lc_r}}%{pg:%{!pthread:%{!kthread:-lc_p}%{kthread:-lpthread_p -lc_p}}%{pthread:-lc_r_p}}}"
/* Provide a LINK_SPEC appropriate for FreeBSD. Here we provide support
for the special GCC options -static and -shared, which allow us to
------------ end freebsd 3.2 egcs pthread patch ----------------
|