Library erzeugen - Symbolprobleme
Posted: 10. May 2009 10:00
Hi,
ich nutze aktuell folgendes Makefile um mir eine Library zu erzeugen (dass keine zusätzlichen Symlinks auf die Library erzeugt werden ist dabei gewollt):
Mein Problem dabei: Diese Library exportiert massenhaft symbole, nicht nur die, die gewollt sind (so lustige Dinge wie sprintf). Wenn ich die Symbole mit strip enfterne, sind natürlich alle Weg, inklusive der erwünschten.
Meine Frage deswegen: gibt es einen Weg, explizit zu definieren, welche Symbole die Library tatsächlich exportieren soll, so das alles überflüssige wegbleibt?
Hintergrund: das Gesamtpaket soll auf einem eher schwachbrüstigen Embedded-System laufen - und da muss ich mit jedem Byte geizen.
ich nutze aktuell folgendes Makefile um mir eine Library zu erzeugen (dass keine zusätzlichen Symlinks auf die Library erzeugt werden ist dabei gewollt):
Code: Select all
CCOMPILER=g++ -Wall -Wno-unused -fPIC -g0 -O2 -D_REENTRANT -DENV_LINUX -I . -I ..
# system libraries. These are needed by ACDK at least
SYSLIBRARIES=
#-lpthread -lm -ldl
# all libs together
LIBS = $(SYSLIBRARIES)
# -Wl,-Bdynamic -L$(ACDKHOME)/bin $(ACDKLIBS)
EXECUTABLE=../ioplugins/libio_network_in.so
# want maybe to debug
LINK=g++ -shared
OBJECTS = libio_network_in.o
default: $(EXECUTABLE)
# builds the executable itself
# don't forget to export LD_LIBRARY_PATH=/artefaktur/acdk/bin before execute the binary
$(EXECUTABLE): $(OBJECTS)
$(LINK) $(SYSLDFLAGS) $(LDFLAGS) -o $(EXECUTABLE) $(OBJECTS) $(LIBS)
%.o: %.cpp
$(CCOMPILER) -c $< -o $@
clean:
rm $(OBJECTS) $(EXECUTABLE)
Meine Frage deswegen: gibt es einen Weg, explizit zu definieren, welche Symbole die Library tatsächlich exportieren soll, so das alles überflüssige wegbleibt?
Hintergrund: das Gesamtpaket soll auf einem eher schwachbrüstigen Embedded-System laufen - und da muss ich mit jedem Byte geizen.