PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Standartmäßiges Einbinden von math.h in gcc



13-09-2000, 10:40
Hi,

da bin ich wieder! Und schon wieder habe ich ne Frage! Wie bindet man denn eine bestimmte Library, die nicht standartmäßig gelinkt ist in den Compiler ein. Ich weiß nicht ob ichs richtig formuliert habe aber ich möchte einfach für mein C-Übungen nicht ständig

gcc -lm -o ...

eingeben.

Danke und Gruß

Stefan

thommy
13-09-2000, 10:45
Entweder Du setzt einen Alias oder verwendest gleich ein
<a href="http://www.linuxfibel.de/linux/linuxfibel/make.htm" target="_blank">Makefile</a>. Letzteres ist ohnehin sinnvoll, wenn Deine Projekte etwas größer werden.

Thomas

thommy
13-09-2000, 13:07
Sorry, war vielleicht etwas knapp beantwortet http://www.linuxforen.de/ubb/wink.gif

Also, wenn Du nicht immer "-lm" explizit der gcc-Kommandozeile hinzufügen willst, dann setze einen Alias "alias gcc='gcc -lm'. Bei einem Aufruf von "gcc -o bla bla.c" expandiert die Zeile zu "gcc -lm -o bla bla.c". Und... richtig, wenn der Alias permanent zur Verfügung stehen soll, dann schreibe ihn in die ".profile".


make und Makefiles sind ein nützliches Instrument, um ein Programmierprojekt verwaltbar zu gestalten. Da das Erstellen eines Makefiles nicht ganz trivial ist, solltest Du Dir mal die Einführung in obigen Link anschauen. Aber ein kleines Beispiel gebe ich hier dennoch an, wie ein Makefile aussehen könnte, das aus einer Datei bla.h und bla.c das Programm "bla" zaubert:

<pre>
# Variablendefinitionen
CC=/usr/bin/gcc # der Compiler
CCFLAGS= -lm -g # Compileroptionen
RM=rm -f

bla: bla.o
$(CC) bla.o -o bla

bla.o: bla.c bla.h
$(CC) -c bla.c bla.h

clean:
$(RM) bla.o
</pre>

VORSICHT: Die eingrückten Zeilen sind zwingend durch einen Tabulator einzurücken (keine Leerzeichen!).

Um jetzt das Programm bla zu erzeugen, genügt der Aufruf "make bla", um das Object-File zu löschen "make clean"...
Der Vorteil ist, dass der Compiler tatsächlich nur aufgerufen wird, wenn sich an den Dateien bla.h oder bla.c etwas geändert hat. Bei dem simplen Beispiel spielt das zwar keine Rolle, aber wenn Dein Projekt eine gewisse Größe hat, erreichst Du durch ein sauberes Makefile, dass wirklich nur die relevanten Teile neu übersetzt werden.

Thomas

13-09-2000, 15:02
Vielen Dank für Deine Mühe!!!

14-09-2000, 00:38
Sorry das ich vielleicht doof frage! Aber wie meinst Du das genau? Ich kenne das mit den Aliases nur im jeweiligen .profile. Meinst Du das? Und in Sachen Makefile weiß ich zwar grob um was es da geht aber es wäre schön wenn Du mal ein Beispiel posten könntest.

Danke

Stefan