ELF Problem durch pow() Funktion

Gast #1084580
Lesenswert?
• ▲
▼
Hallo,

ich habe leider folgendes Problem.
Ich möchte die pow() Potenzfunktion aus der math.h verwenden, jedoch 
kommt beim compilieren eine Fehlermeldung das die elf-Datei nicht 
erstellt werden konnte.

Also es handelt sich um folgende Code zeilen:
1
  double dHoehe=0, dVar1=0, dVar2=0;
2
  //...
3
  
4
  if(uiTmp16 <= 8192)
5
    fTemperature = ((uiTmp16 & 0x1FFF)/20);
6
  else
7
    fTemperature = -((uiTmp16 & 0x1FFF)/20);
8

9
  fPressure = uiTmp32 / 4;
10
  dVar1 = (fPressure / 101325);
11
  dVar2 = (0.0065 * (287.052 / 9.82));
12
  dHoehe = ((273.15 + fTemperature) * (1-(pow(dVar1, dVar2))))/(0.0065);
Übergebe ich die Parameter vllt falsch? Ich habe es auch schon 
ausprobiert mit pow(5,3), dann läuft der Compiliervorgang ohne 
Fehlermeldung durch.
Angehängte Dateien:
Persönliche Seite #1084628
Lesenswert?
• ▲
▼
Ja ist im Makefile.

In manchen Makefiles gibt es diese Zeile, wenn die Mathelibrary 
eingebunden werden soll (bei deinem Projekt)

MATH_LIB = -lm

und diese, wenn nicht (nicht bei deinem Projekt)

MATH_LIB =

Die eigentlichen Optionen für den Linker werden dann so zusammengebaut:

LDFLAGS += $(PRINTF_LIB) $(SCANF_LIB) $(MATH_LIB)

Wichtig ist, dass die Mathelibrary am Schluss steht. Nur dann ist 
sicher, dass alle benötigten Mathesymbole aus der vorhergehenden 
Libraries auch gefunden werden.

Und in der Kommandozeile tauchen die so zusammengebauten Linkeroptionen 
in diesem Abschnitt auf:

# Link: create ELF output file from object files.
.SECONDARY : $(TARGET).elf
.PRECIOUS : $(OBJ)
%.elf: $(OBJ)
  @echo
  @echo $(MSG_LINKING) $@
  $(CC) $(ALL_CFLAGS) $^ --output $@ $(LDFLAGS)

ADD: Wenn du AVR Studio benutzt, kannst du das Makefile nicht 
unmittelbar ändern. Dort geht das auf einer der Einstellungsunterseiten 
in dem du die Mathelibrary libm.a von der linken Spalte in die rechte 
Spalte ziehst.

http://www.google.de/search?hl=de&client=firefox-a&rls=org.mozilla%3Ade%3Aofficial&hs=CEf&q=%22relocation+truncated+to+fit%3A%22+R_AVR_13_PCREL+%22against+symbol%22+libgcc.a+&btnG=Suche&meta=
Gast #1085335
Lesenswert?
• ▲
▼
>Aktuelles AVR Studio benutzen, da sollte libm.a (-lm) immer dabei sein.

Ist sie anscheinend auch. Aber im makefile taucht -lm nur auf, wenn man 
es explizit in den options anwählt.

Wo wird denn die libm "automatisch" dazugelinkt?

Oliver
#1103966
Lesenswert?
• ▲
▼
Ich habe versucht die libm.a unter
"Project > Configuration Options > Libraries"
einzubinden. Leider geht das bei mir nicht, da ich auch den Library 
Search Path nicht einstellen kann. (Siehe Anhang)
Das direkt hinzufügen der MATH_LIB in dem Makefile, brachte auch keinen 
Erfolg.
Wieso kann der Library Search Path nicht eingestellt werden? Hat da 
jemand eine Idee? Muss man beim erstellen des Porjektes vllt irgendetwas 
bestimmtes beachten?

Gruß Eugen
Angehängte Dateien:

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.