Forum: Compiler & IDEs libm.a wird nicht gefunden


von timertick_t (Gast)


Lesenswert?

Ich möchte für einen STM32F4 libm.a für #include <math.h> dazu linken.

Ich habe den Pfad per C&P in Eclipse unter:
Settings -> Cross ARM C++ LINKER -> Libraries -> Reiter 'Library search 
path'
absolut angegeben und unter dem Reiter 'Libraries' libm.a eingetragen.

/home/timertick_t/ARMtoolchains/gcc-arm-none-eabi-4_9-2015q1/bin/../lib/ 
gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/bin/ld:  cannot find 
-llibm.a
collect2: error: ld returned 1 exit status
make: *** [test_c++.elf] Error 1

Warum kommt der Fehler?

von foo (Gast)


Lesenswert?

In deinem Eclipse solltest du dann nicht "libm.a" eintragen, sondern nur 
"m". Daraus wird als Argument für den Compiler dann "-lm", und dieser 
macht sich dann von alleine auf die Suche nach libm.a.

Mit "-llibm.a" sucht er dagegen nach liblibm.a.a und findet das nicht.

von timertick_t (Gast)


Lesenswert?

Ob er dann auch die rychtyge libm.a findet? In der Toolchain liegen 
mehrere.

So.
Hab den search path mal so stehen gelassen und unter dem Reiter 
'Libraries' nur 'm' eingetragen. Das hat funktioniert.

Die entsprechende Info im Ausgabefenster:
// Linker bla bla
./src/_initialize_hardware.o ./src/_write.o ./src/main.o   -lm


Der Code ist im Vergleich zu vorher aber nicht größer geworden. Wird 
wohl daran liegen, daß ich die Funktion in der ich die lib für 
entsprechende sin und cos Funktionen benötige in meinem Qelltext noch 
nicht aufgerufen habe, oder?

von foo (Gast)


Lesenswert?

Richtig. Beim Linken von statischen Libraries (*.a) wird nur der Code 
für die benutzten Funktionen übernommen. Nutzt du keine einzige davon 
wird das Binary nicht ein Byte größer.

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.