From b9dfb992c78e3c8786dee303e4a9994d46b6990a Mon Sep 17 00:00:00 2001 From: Baruch Sterin Date: Thu, 22 Dec 2016 18:15:29 -0800 Subject: (1) Makefile: added a shared library target, (2) no longer compile the main function as part of libabc.a --- Makefile | 8 +++++++- readme.md | 7 +++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 2385431c..d45978a9 100644 --- a/Makefile +++ b/Makefile @@ -139,6 +139,8 @@ OBJ := \ $(patsubst %.c, %.o, $(filter %.c, $(SRC))) \ $(patsubst %.y, %.o, $(filter %.y, $(SRC))) +LIBOBJ := $(filter-out src/base/main/main.o,$(OBJ)) + DEP := $(OBJ:.o=.d) # implicit rules @@ -186,11 +188,15 @@ $(PROG): $(OBJ) @echo "$(MSG_PREFIX)\`\` Building binary:" $(notdir $@) $(VERBOSE)$(LD) -o $@ $^ $(LIBS) -lib$(PROG).a: $(OBJ) +lib$(PROG).a: $(LIBOBJ) @echo "$(MSG_PREFIX)\`\` Linking:" $(notdir $@) $(VERBOSE)ar rv $@ $? $(VERBOSE)ranlib $@ +lib$(PROG).so: $(LIBOBJ) + @echo "$(MSG_PREFIX)\`\` Linking:" $(notdir $@) + $(VERBOSE)$(CXX) -shared -o $@ $^ $(LIBS) + docs: @echo "$(MSG_PREFIX)\`\` Building documentation." $(notdir $@) $(VERBOSE)doxygen doxygen.conf diff --git a/readme.md b/readme.md index c7a6816d..ca9a90ba 100644 --- a/readme.md +++ b/readme.md @@ -53,6 +53,13 @@ The current version of ABC can be compiled with C compiler or C++ compiler. * To compile as C++ code with namespaces: make sure that `CC=g++` and `ABC_NAMESPACE` is set to the name of the requested namespace. For example, add `-DABC_NAMESPACE=xxx` to OPTFLAGS. +## Building a shared library + + * Compile the code as position-independent by adding `ABC_USE_PIC=1`. + * Build the `libabc.so` target: + + make ABC_USE_PIC=1 libabc.so + ## Bug reporting: Please try to reproduce all the reported bugs and unexpected features using the latest -- cgit v1.2.3