lib shared help
Rick Sivernell
res005ru
Fri Jan 20 18:11:00 PST 2006
I have lib I am trying to make, where do I put -fPIC to build all .o into a share
lib? It will build a lib*.a just fine.
RSivernell:/swdev/downloads/swdev/editor/wxstedit/src # make
g++ -shared -o /usr/local/lib/libwx_gtk2d_stedit-2.6.so.1.0.0 stedit.o stedlgs.o
stedlgs_wdr.o steexprt.o stefindr.o steframe.o stelangs.o stemenum.o stenoteb.o
steopts.o steprefs.o steprint.o stesplit.o steshell.o
stestyls.o /usr/lib64/gcc-lib/x86_64-suse-linux/3.3.4/../../../../x86_64-suse-linux/bin/ld:
stedit.o: relocation R_X86_64_32 against `vtable for wxSTEditorRefData' can not be
used when making a shared object; recompile with -fPIC stedit.o: could not read
symbols: Bad value collect2: ld returned 1 exit status make: ***
[/usr/local/lib/libwx_gtk2d_stedit-2.6.so.1.0.0] Error 1
RSivernell:/swdev/downloads/swdev/editor/wxstedit/src
# Makefile for wxstedit lib (UNIX).
# ----------------------------------------------------------------------------
# wxWidgets build settings
WXCONFIG := wx-config
WXDIR = $(shell $(WXCONFIG) --prefix)
WXEXECDIR = $(shell $(WXCONFIG) --exec-prefix)
WXLIBDIR = $(WXEXECDIR)/lib
WXBASENAME = $(shell $(WXCONFIG) --basename)
WXVERSION = $(shell $(WXCONFIG) --version)
WXRELEASE = $(shell $(WXCONFIG) --release)
WXCXX = $(shell $(WXCONFIG) --cxx)
WXCXXFLAGS = $(shell $(WXCONFIG) --cxxflags)
WXLIBS = $(shell $(WXCONFIG) --libs)
WXSTC_LIB = $(WXBASENAME)_stc-$(WXRELEASE)
# ----------------------------------------------------------------------------
WXSTEDIT_LIBNAME = $(WXBASENAME)_stedit-$(WXRELEASE)
WXSTEDIT_LIBDIR = $(WXLIBDIR)
LIBVERSION_CURRENT=1
LIBVERSION_REVISION=0
LIBVERSION_AGE=0
TARGET_LIBNAME = lib$(WXSTEDIT_LIBNAME)
TARGET_LIB_STATIC = $(WXSTEDIT_LIBDIR)/$(TARGET_LIBNAME).a
TARGET_LIB_SHARED = $(WXSTEDIT_LIBDIR)/$(TARGET_LIBNAME).so.$(LIBVERSION_CURRENT).
$(LIBVERSION_REVISION).$(LIBVERSION_AGE) TARGET_LIB_LINK1 = $(TARGET_LIBNAME).so.
$(LIBVERSION_CURRENT) TARGET_LIB_LINK2 = $(TARGET_LIBNAME).so
# ----------------------------------------------------------------------------
CXXFLAGS = $(WXCXXFLAGS) -MMD -g -Wall -Wunused -Wunused-parameter
LDLIBS = $(WXLIBS)
CXX = $(WXCXX)
# -pg in libs and defs for profiling
PROFILE = #-pg
APPEXTRADEFS = -I$(WXDIR)/contrib/include -I../include $(PROFILE)
APPEXTRALIBS = -l$(WXSTC_LIB) $(PROFILE)
# ----------------------------------------------------------------------------
RM = rm -f
AR = ar
AROPTIONS = rcu
RANLIB = ranlib
LN_S = ln -s
# ----------------------------------------------------------------------------
OBJECTS = \
stedit.o \
stedlgs.o \
stedlgs_wdr.o \
steexprt.o \
stefindr.o \
steframe.o \
stelangs.o \
stemenum.o \
stenoteb.o \
steopts.o \
steprefs.o \
steprint.o \
stesplit.o \
steshell.o \
stestyls.o
DEPFILES=$(OBJECTS:.o=.d)
.cpp.o:
$(CXX) -c $(CXXFLAGS) $(APPEXTRADEFS) -o $@ $<
all: $(TARGET_LIB_STATIC) $(TARGET_LIB_SHARED)
$(TARGET_LIB_STATIC) : $(OBJECTS)
@$(RM) $@
$(AR) $(AROPTIONS) $@ $(OBJECTS)
$(RANLIB) $@
$(TARGET_LIB_SHARED): $(OBJECTS)
$(CXX) -shared -o $@ $(OBJECTS)
cd $(WXLIBDIR) \
&& $(RM) $(TARGET_LIB_LINK1) $(TARGET_LIB_LINK2) \
&& $(LN_S) $(TARGET_LIB_SHARED) $(TARGET_LIB_LINK1) \
&& $(LN_S) $(TARGET_LIB_SHARED) $(TARGET_LIB_LINK2)
# wxstedit program using shared stedit library
#$(PROGRAM): $(PROGRAM).o $(TARGET_LIB_SHARED)
# $(CXX) $(LDFLAGS_EXE) -o $@ $(PROGRAM).o $(LDLIBS) $(APPEXTRALIBS) -l
# $(WXSTEDIT_LIB)
# wxstedit program using static stedit library
#$(PROGRAM): $(PROGRAM).o $(TARGET_LIB_STATIC)
# $(CXX) $(LDFLAGS_EXE) -o $@ $(PROGRAM).o $(LDLIBS) $(APPEXTRALIBS)
# $(TARGET_LIB_STATIC)
# wxstedit program using just object files and not the stedit lib
#$(PROGRAM): $(PROGRAM).o $(OBJECTS)
# $(CXX) $(LDFLAGS_EXE) -o $@ $(PROGRAM).o $(OBJECTS) $(LDLIBS) $(APPEXTRALIBS)
clean:
rm -f $(OBJECTS) $(DEPFILES) core \
$(TARGET_LIB_STATIC) \
$(TARGET_LIB_SHARED) \
$(WXSTEDIT_LIBDIR)/$(TARGET_LIB_LINK1) \
$(WXSTEDIT_LIBDIR)/$(TARGET_LIB_LINK2)
-include $(DEPFILES)
--
Rick Sivernell Dallas,
Texas 75287 972 306-2296
res005ru at verizon.net
Registered Linux User
More information about the Linux-users
mailing list