Library erzeugen - Symbolprobleme

Antworten
Nachricht
Autor
ElBlues
Beiträge: 127
Registriert: 25. Mär 2008 12:50
Kontaktdaten:

Library erzeugen - Symbolprobleme

#1 Beitrag von ElBlues » 10. Mai 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):

Code: Alles auswählen

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!

Benutzeravatar
Janka
Beiträge: 3581
Registriert: 11. Feb 2006 19:10

#2 Beitrag von Janka » 12. Mai 2009 14:39

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.

Antworten