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?
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.
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?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.