Library erzeugen - Symbolprobleme

Post Reply
Message
Author
ElBlues
Posts: 127
Joined: 25. Mar 2008 12:50
Contact:

Library erzeugen - Symbolprobleme

#1 Post by ElBlues »

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):

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
        $&#40;CCOMPILER&#41; -c $< -o $@

clean&#58;
        rm $&#40;OBJECTS&#41; $&#40;EXECUTABLE&#41;
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.
http://www.kaufkauf.net - nie wieder Einkäufe vergessen!

User avatar
Janka
Posts: 3585
Joined: 11. Feb 2006 19:10

#2 Post by Janka »

Es werden grundsätzlich *alle* Symbole exportiert, die keine dem entgegenstehende Speicherklasse ("static", "inline" etc.) oder ein entsprechendes Attribut (visibility) besitzen.

http://people.redhat.com/drepper/dsohowto.pdf
http://gcc.gnu.org/onlinedocs/gcc/Code- ... ility-1837
http://gcc.gnu.org/wiki/Visibility

Janka
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.

Post Reply