[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Programm wird teilweise statisch gelinkt - warum?



Hallo,

Ich habe das neulich hier angesprochene Programm molmol
(http://www.mol.biol.ethz.ch/wuthrich/software/molmol/) unter
kompiliert, jetzt überlege ich ein Paket zu bauen. Es läuft auch, macht
auch brav seinen Output in tiff, jpeg und png-Dateien. Aber laut ldd ist
das Binary nicht gegen die entsprechenden Bibliotheken (libtiff etc)
gelinkt, sondern nur gegen die xlibs, xlibmesa, libmotif und libc.

Offenbar wurden die Output-Bibliotheken statisch gelinkt - aber woher
kann das kommen? Ich habe das Makefile selber angepasst, mir ist nichts
in der Richtung aufgefallen. Ein grep nach static in den Unter-Makefiles
hat auchnirgendwo was gefunden. Zwar liefert das Programm im Sourcecode
auch Sourcen für libtiff mit, aber die habe ich nicht angefasst, und
soweit ich die Doku und die Makefiles verstanden habe sollte das auch
make nicht tun (außerdem blieben dann noch jpg und png).

Nun mal die Fakten:

**********Makefile************
SRCDIRS  = tools sg src
SUBDIRS  = $(SRCDIRS) lib
TARGETS  = default depend

include debiandef # das ist von mir, wird nur für von mir eingefügte
                  # targets gebraucht

default:

$(TARGETS):
	$(MAKE) $(SRCDIRS) TARGET=$@

$(SUBDIRS): FORCE
	cd $@; $(MAKE) $(TARGET)

# dann nur noch clean etc.

FORCE:
**********Makefile************

In den SRCDIRS und Unterverzeichnissen dann entsprechende Makefiles, die
alle ein 

include $(TOP)/makedef

enthalten und letzlich dann die Compilerbefehle, z.B. 
TOP      = ../..

include $(TOP)/makedef

LIBDIR   = $(TOP)/lib
INCLUDES = -I$(TOOLSDIR)/include -I$(SGDIR)/include -I$(TOP)/include
CPPFLAGS = $(INCLUDES) $(MCPPFLAGS)
CFLAGS   = $(CPPFLAGS) $(MCFLAGS)

LIBS     = $(LIBDIR)/libcip.a $(LIBDIR)/libcmd.a \
           $(LIBDIR)/libui.a \
           $(LIBDIR)/libgraph.a $(LIBDIR)/libio.a $(LIBDIR)/libpu.a \
           $(LIBDIR)/libcalc.a $(LIBDIR)/libprim.a $(LIBDIR)/libdata.a \
           $(LIBDIR)/libattr.a $(LIBDIR)/libfileio.a $(LIBDIR)/libos.a
SGLIB    = $(SGDIR)/lib/libsg.a
TOOLSLIB = $(TOOLSDIR)/lib/libtools.a $(IMGLIB)

PROGRAM = molmol
OBJ = MolMol.o MolInit.o
SRC = $(OBJ:.o=.c)

default: $(PROGRAM)

$(PROGRAM): $(OBJ) $(LIBS) $(SGLIB) $(TOOLSLIB)
        $(CC) -o $@ $(CFLAGS) $(OBJ) $(LIBS) $(SGLIB) $(TOOLSLIB) $(SYSLIB)

clean:
        rm -f $(OBJ) $(PROGRAM) core *.ps

depend: $(SRC)
include $(TOP)/makedep
*******************************

Interessant sind also wohl noch makedef und makedep - aber letztere
Dateien sind hier alle leer. makedef habe ich selbst angepasst:

frank@alhambra:~/src/Packages/molmol/molmol-2k.2.0$ grep -v ^# makedef | grep -v ^$
DEB_INCLUDEDIR = /usr/include
DEB_LIBDIR = /usr/lib
TIFFDIR = $(DEB_INCLUDEDIR)
JPEGDIR = $(DEB_INCLUDEDIR)
PNGDIR = $(DEB_INCLUDEDIR)
ZLIBDIR = $(DEB_INCLUDEDIR)
*********
( bis hierhin alles von mir verändert bzw. eingeführt)
*********
IMGDEF  = -DTIFF_SUPPORT -DJPEG_SUPPORT -DPNG_SUPPORT
IMGINCL = -I$(TIFFDIR) -I$(JPEGDIR) -I$(PNGDIR) -I$(ZLIBDIR)
IMGLIB  = $(DEB_LIBDIR)/libtiff.a $(DEB_LIBDIR)/libjpeg.a \
          $(DEB_LIBDIR)/libpng.a $(DEB_LIBDIR)/libz.a
CPP = /lib/cpp
MCPPFLAGS = $(MISSFUNC) -I/usr/X11R6/include -L/usr/lib -L/usr/X11R6/lib #original
CC = /usr/bin/cc
MCFLAGS = -O
RANLIB = /bin/true
WAIT = /bin/sleep 2
SHELL = /bin/sh
SGDEVDIR = ogl x11 no pov rib vrml1 vrml2 ps fm 
SGDEVDEF = -DSG_DEV_OGL -DSG_DEV_X11 -DSG_DEV_NO -DSG_DEV_POV -DSG_DEV_RIB -DSG_DEV_VRML1 -DSG_DEV_VRML2 -DSG_DEV_PS -DSG_DEV_CPS -DSG_DEV_FM3 -DSG_DEV_FM4
PUDEVDIR = motif tty
PUDEVDEF = -DPU_DEV_MOTIF -DPU_DEV_TTY
IODEVDIR = motogl motx11 ttyno
IODEVDEF =  -DIO_DEV_MOTIF_OGL -DIO_DEV_MOTIF_X11 -DIO_DEV_TTY_NO
*********
die letzten Zeilen seit SHELL alle gemäß Anleitung angepasst
*********
MOTIFDEF = -DFUNCPROTO
SYSLIB = -lXm -lXt -lX11 -lm -lGL -lGLw -lGLU -lpthread
*********
ab -lGL alles von mir, dann wieder zwei originale Zeilen
*********
TOOLSDIR = $(TOP)/tools
SGDIR    = $(TOP)/sg

Kann mir jemand helfen, oder was sollte ich lesen? Oder kann jemand eine
Newsgroup empfehlen, in der man mir helfen könnte?

TIA, Frank

-- 
Frank Küster, Biozentrum der Univ. Basel
Abt. Biophysikalische Chemie



Reply to: