PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Libraries für C compilieren



Doc Maverick
12-02-2002, 20:29
Hallo Leute,
bisher habe ich noch nicht viel mit C unter Linux gearbeitet, aber nun bin ich in der Verlegenheit, daß ich eine eigene Bibliothek compilieren muß.
Dummerweise finde ich die richtigen Switches nicht und Makefiles gebene sich leider auch nicht so auskunftsfreudig. :(
Könnt Ihr mir vielleicht helfen?
Danke!
Tschüß.

TheDodger
12-02-2002, 20:45
Ich kann dir ja mal ein Makefile eines meiner Projekte reinstellen, welches eine lib erzeugt:



CC = g++
O = .

OBJ = $(O)/bstools/bsproc.o $(O)/bstools/bserrorhandler.o \
$(O)/bstools/bsutil.o $(O)/bstools/bsconfigure.o \
$(O)/syshandler.o \
$(O)/database/umsdatabase.o $(O)/database/umsquery.o \
$(O)/umstools/umstools.o $(O)/umstools/taglist.o \
$(O)/login/login.o \
$(O)/importer/importer.o \
$(O)/exporter/exporter.o \
$(O)/userdata/user.o \
$(O)/message/message.o \
$(O)/config/config.o \
$(O)/ums4sql.o

C_ARGS = -Wall -I/usr/local/pgsql/include/ -I../mimepp/src/ -fPIC -DPIC
L_ARGS = -L/usr/local/pgsql/lib/ -L../mimepp/rel/ -lpq++
L_LIBS = -lmimepp_core -lmimepp_net -lct -lcs -lcomn -ltcl -lintl -linsck

EXE=../bin/libums4sql.so


.cpp.o:
$(CC) $(C_ARGS) -c $*.cpp -o $(O)/$*.o

all: $(EXE)

new: clean all

clean:
rm -f $(O)/*.o
rm -f $(O)/bstools/*.o
rm -f $(O)/database/*.o
rm -f $(O)/umstools/*.o
rm -f $(O)/importer/*.o
rm -f $(O)/exporter/*.o
rm -f $(O)/userdata/*.o
rm -f $(O)/message/*.o
rm -f $(O)/server/*.o
rm -f $(O)/login/*.o
rm -f $(O)/config/*.o
rm -f *~
rm -f *.bak*
rm -f $(EXE)
rm -f $(EXE).tgz
rm -f errors
rm -f *.so.*
rm -f *.a

distclean: clean

zip: clean
tar czf $(EXE).tgz * --exclude *~ --exclude archiv/* --exclude *.o

$(EXE): $(OBJ)
$(CC) -shared -o $(EXE) $(OBJ) $(L_ARGS) $(C_LIBS)


Soweit ich mich erinnere, war '-shared' beim linken ausschlaggebend ...

Das Makefile ist unvollständig !
Jetzt würde ich dafür bestimmt qmake oder tmake bemühen ... ein Projektfile zu pflegen ist einfacher und beider erstellen ein Makefile anhand dieser Datei
siehe dazu
http://doc.trolltech.com/qmake.html
http://www.trolltech.com/developer/download/tmake.html

Doc Maverick
13-02-2002, 20:30
Vielen Dank!
Den Switch -shared habe ich irgendwie übersehen. Damit klappt's dann auch problemlos.
Tschüß.