Forum: Compiler & IDEs Linker Fehler mit aktueller Code::Blocks Version


von Chris (Gast)


Lesenswert?

Guten Morgen,

ich habe unter Code::Blocks 17.12 ein Programm geschrieben, das die 
Funktion sinf() aus der math.h verwendet. Funktioniert auch einwandfrei. 
Es wird kein Makefile verwendet, nur die "normale" Projektdatei *.cbp.
Nun habe ich die Tage mal die aktuelle Version 20.03 installiert und das 
vorher beschriebene Projekt geöffnet. Nun bekomme ich den Linker Fehler 
"undefined reference to sinf". Gebe ich zusätzlich die Linker Option -lm 
an, dann lässt sich das Projekt wieder linken.
Kann mir einer erklären, warum dieser Fehler mit der neuen Version 
auftritt, obwohl alle Einstellungen identisch geblieben sind?

Danke im Voraus.
Chris

von Cartman (Gast)


Lesenswert?

Ohne jetzt Codeblocks zu kennen, verwendet jede IDE fuer den
Aufruf von Compiler, Assembler und Linker Defaults fuer die
Argumente. Deine "Projekteigenschaften" sind da nur ein
Addendum dazu.
Beim neuen Release scheinen der/die Macher zur Auffassung
gekommen zu sein, dass die libm eben nicht mehr per Default
dazu gelinkt wird. Unter Umstaenden kannst du diese Defaults
editieren. Danach musst du dann aber mal selber suchen...

von Chris (Gast)


Lesenswert?

Vielen Dank für die Info.
Aber dann sollte man doch diese Default Compiler/Linker Optionen beim 
Compiler/Linker Output sehen, oder?
Bzw. jetzt kann ich ja rein aus dem Output nicht erkennen, welche 
Optionen/Flags noch aktiviert sind. Bei der Verwendung eines Makefiles 
kommen diese Default Optionen aber nicht zum Einsatz? Da wird rein nach 
dem Inhalt des Makefiles gebaut?

von Dirk B. (dirkb2)


Lesenswert?

Chris schrieb:
> Code::Blocks

ist eine Entwicklungsumgebung, die mit verschiedensten Compilern 
arbeitet.

Je nach gewähltem Compiler/Zielsystem kann es von Vorteil sein, nicht 
die große libm automatisch mitzulinken.

von Cartman (Gast)


Lesenswert?

> Aber dann sollte man doch diese Default Compiler/Linker Optionen beim
> Compiler/Linker Output sehen, oder?
> Bzw. jetzt kann ich ja rein aus dem Output nicht erkennen, welche
> Optionen/Flags noch aktiviert sind. Bei der Verwendung eines Makefiles .
> kommen diese Default Optionen aber nicht zum Einsatz? Da wird rein
> nach dem Inhalt des Makefiles gebaut?

Zunaechst mal hat der Compiler/Assembler/Linker selbst seine Defaults.
Welches die sind, laesst sich in vielen Faellen per Kommandozeile
und passender (Frage-)Option herausbekommen.
Oder es steht in der Dokumentation.

Dann kommt die IDE die Compiler/Assembler/Linker aufruft und selbst
noch mit weiteren Optionen diese Defaults aendern kann.
Diese koenntest du in einem Buildlog sehen, wenn deine Einstellungen
voellig leer sind.

Und zum Schluss kommst du, der in seinem Projekt sagt, du moechtest
das und das und das.

Wie es bei einem Makefile und der Verwendung von make ist,
solltest du dir jetzt selber beantworten koennen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.