--- a/Makefile
+++ b/Makefile
@@ -15,91 +15,91 @@
 prefix = /usr/local
 exec_prefix = ${prefix}
 bindir = ${exec_prefix}/bin
+libdir = ${prefix}/lib
 
 #########################################
 
 CC  = gcc
-OBJ = open2300.o rw2300.o linux2300.o win2300.o
-LOGOBJ = log2300.o rw2300.o linux2300.o win2300.o
-FETCHOBJ = fetch2300.o rw2300.o linux2300.o win2300.o
-WUOBJ = wu2300.o rw2300.o linux2300.o win2300.o
-CWOBJ = cw2300.o rw2300.o linux2300.o win2300.o
-DUMPOBJ = dump2300.o rw2300.o linux2300.o win2300.o
-HISTOBJ = history2300.o rw2300.o linux2300.o win2300.o
-HISTLOGOBJ = histlog2300.o rw2300.o linux2300.o win2300.o
-DUMPBINOBJ = bin2300.o rw2300.o linux2300.o win2300.o
-XMLOBJ = xml2300.o rw2300.o linux2300.o win2300.o
-PGSQLOBJ = pgsql2300.o rw2300.o linux2300.o win2300.o
-LIGHTOBJ = light2300.o rw2300.o linux2300.o win2300.o
-INTERVALOBJ = interval2300.o rw2300.o linux2300.o win2300.o
-MINMAXOBJ = minmax2300.o rw2300.o linux2300.o win2300.o
-MYSQLHISTLOGOBJ = mysqlhistlog2300.o rw2300.o linux2300.o win2300.o
+LIB = lib2300
+LIB_C = rw2300.c linux2300.c
+LIBOBJ = rw2300.o linux2300.o
 
 VERSION = 1.11
 
 CFLAGS = -Wall -O3 -DVERSION=\"$(VERSION)\"
-CC_LDFLAGS = -lm
-CC_WINFLAG = 
-# For Windows - comment the two line above and un-comment the two lines below.
-#CC_LDFLAGS = -lm -lwsock32
-#CC_WINFLAG = -mwindows
+CC_LDFLAGS = -L. -lm -l2300
+LFLAGS = -shared -Wl,-soname
 INSTALL = install
+MAKE_EXEC = $(CC) $(CFLAGS) $@.c -o $@ $(CC_LDFLAGS)
 
 ####### Build rules
 
-all: open2300 dump2300 log2300 fetch2300 wu2300 cw2300 history2300 histlog2300 bin2300 xml2300 light2300 interval2300 minmax2300 mysql2300 mysqlhistlog2300
+all: open2300 dump2300 log2300 fetch2300 wu2300 cw2300 history2300 histlog2300 bin2300 xml2300 light2300 interval2300 minmax2300 
+#mysql2300 mysqlhistlog2300
 
-open2300 : $(OBJ)
-	$(CC) $(CFLAGS) -o $@ $(OBJ) $(CC_LDFLAGS)
-	
-dump2300 : $(DUMPOBJ)
-	$(CC) $(CFLAGS) -o $@ $(DUMPOBJ) $(CC_LDFLAGS)
+lib2300 :
+	$(CC) -c -fPIC $(CFLAGS) $(LIB_C)
+	$(CC) $(LFLAGS),$@.so -o $@.so.$(VERSION) $(LIBOBJ)
+	ln -sf $@.so.$(VERSION) $@.so
+
+open2300 : $(LIB)
+	$(MAKE_EXEC)
 	
-log2300 : $(LOGOBJ)
-	$(CC) $(CFLAGS) -o $@ $(LOGOBJ) $(CC_LDFLAGS) $(CC_WINFLAG)
+dump2300 : $(LIB)
+	$(MAKE_EXEC)
 	
-fetch2300 : $(FETCHOBJ)
-	$(CC) $(CFLAGS) -o $@ $(FETCHOBJ) $(CC_LDFLAGS)
+log2300 : $(LIB)
+	$(MAKE_EXEC)
 	
-wu2300 : $(WUOBJ)
-	$(CC) $(CFLAGS) -o $@ $(WUOBJ) $(CC_LDFLAGS) $(CC_WINFLAG)
+fetch2300 : $(LIB)
+	$(MAKE_EXEC)
+
+srv2300 : $(LIB)
+	$(MAKE_EXEC)
+
+wu2300 : $(LIB)
+	$(MAKE_EXEC)
 	
-cw2300 : $(CWOBJ)
-	$(CC) $(CFLAGS) -o $@ $(CWOBJ) $(CC_LDFLAGS) $(CC_WINFLAG)
+cw2300 : $(LIB)
+	$(MAKE_EXEC)
 
-history2300 : $(HISTOBJ)
-	$(CC) $(CFLAGS) -o $@ $(HISTOBJ) $(CC_LDFLAGS)
+history2300 : $(LIB)
+	$(MAKE_EXEC)
 	
-histlog2300 : $(HISTLOGOBJ)
-	$(CC) $(CFLAGS) -o $@ $(HISTLOGOBJ) $(CC_LDFLAGS) $(CC_WINFLAG)
+histlog2300 : $(LIB)
+	$(MAKE_EXEC)
 	
-bin2300 : $(DUMPBINOBJ)
-	$(CC) $(CFLAGS) -o $@ $(DUMPBINOBJ) $(CC_LDFLAGS)
+bin2300 : $(LIB)
+	$(MAKE_EXEC)
 
-xml2300 : $(XMLOBJ)
-	$(CC) $(CFLAGS) -o $@ $(XMLOBJ) $(CC_LDFLAGS) $(CC_WINFLAG)
+xml2300 : $(LIB)
+	$(MAKE_EXEC)
 
-mysql2300:
-	$(CC) $(CFLAGS) -o mysql2300 mysql2300.c rw2300.c linux2300.c $(CC_LDFLAGS) $(CC_WINFLAG) -I/usr/include/mysql -L/usr/lib/mysql -lmysqlclient
+mysql2300: $(LIB)
+	$(CC) $(CFLAGS) $@.c -o $@ -I/usr/include/mysql -L/usr/lib/mysql $(CC_LDFLAGS) -lmysqlclient
 
-pgsql2300: $(PGSQLOBJ)
-	$(CC) $(CFLAGS) -o $@ $(PGSQLOBJ) $(CC_LDFLAGS) $(CC_WINFLAG) -I/usr/include/pgsql -L/usr/lib/pgsql -lpq
+pgsql2300: $(LIB)
+	$(CC) $(CFLAGS) $@.c -o $@ -I/usr/include/pgsql -L/usr/lib/pgsql $(CC_LDFLAGS) -lpq
 
-light2300: $(LIGHTOBJ)
-	$(CC) $(CFLAGS) -o $@ $(LIGHTOBJ) $(CC_LDFLAGS)
+light2300: $(LIB)
+	$(MAKE_EXEC)
 	
-interval2300: $(INTERVALOBJ)
-	$(CC) $(CFLAGS) -o $@ $(INTERVALOBJ) $(CC_LDFLAGS)
+interval2300: $(LIB)
+	$(MAKE_EXEC)
 	
-minmax2300: $(MINMAXOBJ)
-	$(CC) $(CFLAGS) -o $@ $(MINMAXOBJ) $(CC_LDFLAGS) $(CC_WINFLAG)
+minmax2300: $(LIB)
+	$(MAKE_EXEC)
 	
-mysqlhistlog2300 :
-	$(CC) $(CFLAGS) -o mysqlhistlog2300 mysqlhistlog2300.c rw2300.c linux2300.c $(CC_LDFLAGS) $(CC_WINFLAG) -I/usr/include/mysql -L/usr/lib/mysql -lmysqlclient
+mysqlhistlog2300 : $(LIB)
+	$(CC) $(CFLAGS) $@.c -o $@ -I/usr/include/mysql -L/usr/lib/mysql $(CC_LDFLAGS) -lmysqlclient
 
 
 install:
 	mkdir -p $(bindir)
+	mkdir -p $(libdir)
+	$(INSTALL) $(LIB).so.$(VERSION) $(libdir)
+	ln -sf $(libdir)/$(LIB).so.$(VERSION) $(libdir)/$(LIB).so
+	$(INSTALL) srv2300 $(bindir)
 	$(INSTALL) open2300 $(bindir)
 	$(INSTALL) dump2300 $(bindir)
 	$(INSTALL) log2300 $(bindir)
@@ -111,14 +111,11 @@
 	$(INSTALL) light2300 $(bindir)
 	$(INSTALL) interval2300 $(bindir)
 	$(INSTALL) minmax2300 $(bindir)
-	$(INSTALL) mysql2300 $(bindir)
-	$(INSTALL) mysqlhistlog2300 $(bindir)
+#	$(INSTALL) mysql2300 $(bindir)
+#	$(INSTALL) mysqlhistlog2300 $(bindir)
 	
 uninstall:
-	rm -f $(bindir)/open2300 $(bindir)/dump2300 $(bindir)/log2300 $(bindir)/fetch2300 $(bindir)/wu2300 $(bindir)/cw2300 $(bindir)/xml2300 $(bindir)/light2300 $(bindir)/interval2300 $(bindir)/minmax2300 $(bindir)/mysql2300 $(bindir)/mysqlhistlog2300
+	rm -f $(libdir)/$(LIB).* $(bindir)/open2300 $(bindir)/dump2300 $(bindir)/log2300  $(bindir)/fetch2300 $(bindir)/srv2300 $(bindir)/wu2300 $(bindir)/cw2300 $(bindir)/xml2300 $(bindir)/light2300 $(bindir)/interval2300 $(bindir)/minmax2300 $(bindir)/histlog2300 $(bindir)/mysql2300 $(bindir)/mysqlhistlog2300
 
 clean:
-	rm -f *~ *.o open2300 dump2300 log2300 fetch2300 wu2300 cw2300 history2300 histlog2300 bin2300 xml2300 mysql2300 pgsql2300 light2300 interval2300 minmax2300 mysql2300 mysqlhistlog2300
-
-cleanexe:
-	rm -f *~ *.o open2300.exe dump2300.exe log2300.exe fetch2300.exe wu2300.exe cw2300.exe history2300.exe histlog2300.exe bin2300.exe xml2300.exe mysql2300.exe pgsql2300.exe light2300.exe interval2300.exe minmax2300.exe
\ No newline at end of file
+	rm -f *~ *.o *.so* open2300 dump2300 log2300 fetch2300 wu2300 cw2300 history2300 histlog2300 bin2300 xml2300 mysql2300 pgsql2300 light2300 interval2300 minmax2300 mysql2300 mysqlhistlog2300