--- a/configure.in
+++ b/configure.in
@@ -21,7 +21,7 @@
 dnl
 AC_PROG_CC
 AC_PROG_INSTALL
-AC_PROG_RANLIB
+AC_PROG_LIBTOOL
 
 AC_CHECK_HEADERS(sys/sockio.h)
 
--- a/include/libnet/libnet-functions.h
+++ b/include/libnet/libnet-functions.h
@@ -1429,7 +1429,7 @@
  * @param ptag protocol tag to modify an existing header, 0 to build a new one
  * @return protocol tag value on success, -1 on error
  */
-inline u_int32_t
+u_int32_t
 libnet_getgre_length(u_int16_t fv);
 
 /**
--- a/Makefile.am
+++ b/Makefile.am
@@ -12,4 +12,4 @@
 
 EXTRA_DIST = Makefile.am.common
 
-bin_scripts = libnet-config
+bin_SCRIPTS = libnet-config
--- a/sample/Makefile.am
+++ b/sample/Makefile.am
@@ -60,4 +60,4 @@
 ip_link_SOURCES		= ip_link.c
 sebek_SOURCES           = sebek.c
 
-LDADD = $(top_srcdir)/src/libnet.a
+LDADD = $(top_srcdir)/src/libnet.la
--- a/src/libnet_checksum.c
+++ b/src/libnet_checksum.c
@@ -42,8 +42,10 @@
 libnet_in_cksum(u_int16_t *addr, int len)
 {
     int sum;
+    u_int16_t last_byte;
 
     sum = 0;
+    last_byte = 0;
 
     while (len > 1)
     {
@@ -52,7 +54,8 @@
     }
     if (len == 1)
     {
-        sum += *(u_int16_t *)addr;
+        *(u_int8_t*)&last_byte = *(u_int8_t*)addr;
+        sum += last_byte;
     }
 
     return (sum);
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -8,9 +8,9 @@
 
 include $(top_srcdir)/Makefile.am.common
 
-lib_LIBRARIES = libnet.a
+lib_LTLIBRARIES = libnet.la
 
-libnet_a_SOURCES = libnet_asn1.c \
+libnet_la_SOURCES = libnet_asn1.c \
 			libnet_build_802.1q.c \
 			libnet_build_802.1x.c \
 			libnet_build_802.2.c \
@@ -57,15 +57,20 @@
 			libnet_version.c \
 			libnet_write.c
 
-EXTRA_libnet_a_SOURCES = libnet_link_bpf.c \
-			libnet_link_dlpi.c \
-			libnet_link_linux.c \
-			libnet_link_nit.c \
- 			libnet_link_none.c \
-			libnet_link_pf.c \
-			libnet_link_snit.c \
-			libnet_link_snoop.c \
-			libnet_link_win32.c
-
-libnet_a_LIBADD = @LIBOBJS@
+libnet_la_LIBADD = @LTLIBOBJS@
 
+#   Here are a set of rules to help you update your library version
+# information:
+# 
+#   1. If the library source code has changed at all since the last
+#      update, then increment REVISION (`C:R:A' becomes `C:r+1:A').
+# 
+#   2. If any interfaces have been added, removed, or changed since the
+#      last update, increment CURRENT, and set REVISION to 0.
+# 
+#   3. If any interfaces have been added since the last public release,
+#      then increment AGE.
+# 
+#   4. If any interfaces have been removed since the last public release,
+#      then set AGE to 0.
+libnet_la_LDFLAGS = -version-info 4:0:3 # CURRENT[:REVISION[:AGE]]