diff --git a/src/odoors/GNUmakefile b/src/odoors/GNUmakefile
index 949e6b58bdc0aed2c4edbf6a38983b6bc06bc681..83f44dfddcd44c405e5e885703f56f55d118c379 100644
--- a/src/odoors/GNUmakefile
+++ b/src/odoors/GNUmakefile
@@ -46,20 +46,28 @@ CC	:=	gcc
 #                tlink - For Borland compilers
 #                 link - For Microsoft compilers
 #
-LD	:=	ld
+# Get OS name
+OS      :=      $(shell uname)
+
+LD	:=	gcc
 #
 #------------------------------------------------------------------------------
 #
 # Compiler command-line flags.
 #
 CFLAGS	+=	-O2 -g -L. -I../xpdev
+ifeq ($(OS),Darwin)
+ LDFLAGS	+=	$(CFLAGS) -dynamiclib -single_module
+else
+ LDFLAGS	+=	$(CFLAGS) -shared
+endif
 # /MTd /Zi - for debug
 #
 #------------------------------------------------------------------------------
 #
 # Link flags.
 #
-LDFLAGS	:=
+#LDFLAGS	:=
 #
 #------------------------------------------------------------------------------
 #
@@ -146,7 +154,7 @@ OBJECTS := ${OBJDIR}ODAuto${OBJFILE}\
 #         ${OBJDIR}odsys${OBJFILE}\	this file is missing
 
 ${LIBDIR}libODoors${SHLIB} : ${OBJECTS}
-	$(CC) $(CFLAGS) -shared -o ${LIBDIR}libODoors${SHLIB}.6.2 ${OBJECTS}
+	$(LD) $(LDFLAGS) -o ${LIBDIR}libODoors${SHLIB}.6.2 ${OBJECTS}
 	ln -fs ${LIBDIR}libODoors${SHLIB}.6.2 ${LIBDIR}libODoors${SHLIB}
 
 ${LIBDIR}libODoors${STATICLIB} : ${OBJECTS}