Archiv verlassen und diese Seite im Standarddesign anzeigen : Standartmäßiges Einbinden von math.h in gcc
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
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
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
Vielen Dank für Deine Mühe!!!
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
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.