diff --git a/Makefile b/Makefile
index 7fa91c8..c85ede2 100644
--- a/Makefile
+++ b/Makefile
@@ -112,3 +112,18 @@ pc:
 .PHONY: all $(PLATS) clean test install local none dummy echo pecho lecho
 
 # (end of Makefile)
+
+# Use libtool for binary installs, etc.
+
+export V
+export LIBTOOL = ../libtool --quiet --tag=CC
+# See libtool manual about how to set this
+
+alpine_clean:
+	cd src; $(MAKE) $@
+
+alpine_install:
+	mkdir -p $(INSTALL_BIN) $(INSTALL_INC) $(INSTALL_LIB)
+	cd src; $(LIBTOOL) --mode=install $(INSTALL_EXEC) lua luac $(INSTALL_BIN)
+	cd src; $(INSTALL_DATA) $(TO_INC) $(INSTALL_INC)
+	cd src; $(LIBTOOL) --mode=install $(INSTALL_DATA) liblua.la $(INSTALL_LIB)
diff --git a/src/Makefile b/src/Makefile
index 2e7a412..a72f342 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -59,10 +59,10 @@ $(LUA_A): $(BASE_O)
 	$(AR) $@ $(BASE_O)
 	$(RANLIB) $@
 
-$(LUA_T): $(LUA_O) $(LUA_A)
+origin$(LUA_T): $(LUA_O) $(LUA_A)
 	$(CC) -o $@ $(LDFLAGS) $(LUA_O) $(LUA_A) $(LIBS)
 
-$(LUAC_T): $(LUAC_O) $(LUA_A)
+origin$(LUAC_T): $(LUAC_O) $(LUA_A)
 	$(CC) -o $@ $(LDFLAGS) $(LUAC_O) $(LUA_A) $(LIBS)
 
 clean:
@@ -194,4 +194,33 @@ lvm.o: lvm.c lprefix.h lua.h luaconf.h ldebug.h lstate.h lobject.h \
 lzio.o: lzio.c lprefix.h lua.h luaconf.h llimits.h lmem.h lstate.h \
   lobject.h ltm.h lzio.h
 
+
+export LIBTOOL = ../libtool --quiet --tag=CC
+export LIB_VERSION = 0:0:0
+
+# The following rules use libtool for compiling and linking in order to
+# provide shared library support.
+
+LIB_NAME = liblua.la
+LIB_OBJS = $(CORE_O:.o=.lo) $(LIB_O:.o=.lo)
+
+%.lo %.o: %.c
+	$(LIBTOOL) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) -o $@ $<
+
+$(LIB_NAME): $(LIB_OBJS)
+	$(LIBTOOL) --mode=link $(CC) -version-info $(LIB_VERSION) -release $(V) \
+            -rpath $(RPATH) $(LDFLAGS) -o $(LIB_NAME) $(LIB_OBJS) $(LIB_LIBS)
+
+$(LUA_T): $(LUA_O:.o=.lo) $(LIB_NAME)
+	$(LIBTOOL) --mode=link $(CC) -export-dynamic $(LDFLAGS) -o $@ \
+		$(LUA_O:.o=.lo) $(LIB_NAME) $(LUA_LIBS)
+
+$(LUAC_T): $(LUAC_O:.o=.lo) $(LIB_NAME)
+	$(LIBTOOL) --mode=link $(CC) -static $(LDFLAGS) -o $@ $(LUAC_O:.o=.lo) \
+		$(LIB_NAME)
+
+alpine_clean:
+	$(LIBTOOL) --mode=clean $(RM) $(ALL_O:.o=.lo) $(LIB_NAME) lua luac
+
+alpine_all: $(LIB_NAME) $(LUA_T) $(LUAC_T)
 # (end of Makefile)