Forum: Mikrocontroller und Digitale Elektronik Library in Linker einbinden: Fehler not found


von hochsitzcola (Gast)


Lesenswert?

Ich bin wieder mal am rätseln.

Ich möchte vom CMSIS die Funktionen für FOC nutzen (Park, Clark etc)
Die Funktionen sind in der arm_math.h deklariert, die CubeMX beim 
Anlegen des Projektes auch im Projektordner ablegt. Die genutzte Library 
wird aber nicht automatisch angezogen. Ich habe versucht, sie wie hier 
beschrieben einzubinden, das gibt aber immer eine Fehlermeldung vom 
Linker.

https://mcuoneclipse.com/2013/02/14/tutorial-using-the-arm-cmsis-library/

1
arm-none-eabi-gcc -mcpu=cortex-m3 -mthumb -mfloat-abi=soft -L"C:\CMSIS_5-develop\CMSIS_5-develop\CMSIS\/Lib/ARM" -specs=nosys.specs -specs=nano.specs -T"../STM32F103C6Tx_FLASH.ld" -Wl,-Map=output.map -Wl,--gc-sections -o "LishuiFOC_01.elf" @"objects.list"  -larm_cortexM3l_math -lm
2
c:/gnu_arm/eclipse/plugins/fr.ac6.mcu.externaltools.arm-none.win32_1.16.0.201807130628/tools/compiler/bin/../lib/gcc/arm-none-eabi/7.2.1/../../../../arm-none-eabi/bin/ld.exe: cannot find -larm_cortexM3l_math
3
collect2.exe: error: ld returned 1 exit status

Mit der Pfad-Syntax hab ich schon rumgespielt, selbst wenn ich die 
Library direkt ins Projektverzeichnis lege, gibt es den Fehler. :-(

Wie mache ich das richtig?!

Gruß
hochsitzcola

von Dr. Sommer (Gast)


Lesenswert?

hochsitzcola schrieb:
> "C:\CMSIS_5-develop\CMSIS_5-develop\CMSIS\/Lib/ARM

Sieht das für dich nach einer korrekten Pfadangabe aus?

hochsitzcola schrieb:
> selbst wenn ich die Library direkt ins Projektverzeichnis lege,

Welche Datei genau ist das? Welches Format? Sicher dass du die richtige 
für den GCC erwischt hast und nicht die für den ARM eigenen Compiler?

von c r (Gast)


Lesenswert?

Dein Pfad enthält / und \ gemischt

von Harry L. (mysth)


Angehängte Dateien:

Lesenswert?

Ich nehme an, daß du dich auf Atollic oder die STM32-Workbench beziehst.

Du darfst die Library da nicht als external Library einbinden, da der 
Linker dann einen Namen erwartet, der mit "lib" beginnt.

Stattdessen fügst du die Library unter Properties->C/C++ 
Build->Settings/C Linker->Micelaneos hinzu. (siehe Anhang)

von Oliver S. (oliverso)


Lesenswert?

Wo du das hinschreibst, ist völlig egal. Der Linker erwartet hinter der 
Option -l immer eine lib, die mit „lib“ beginnt.

Da die fraglichen libs das allerdings auch alle tun, macht das nix.

Das Problem wird, wie oben schon geschrieben wurde, der kaputte Pfad 
sein.

Oliver

: Bearbeitet durch User
von Harry L. (mysth)


Lesenswert?

Oliver S. schrieb:
> Wo du das hinschreibst, ist völlig egal. Der Linker erwartet hinter der
> Option -l immer eine lib, die mit „lib“ beginnt.
>
> Da die fraglichen libs das allerdings auch alle tun, macht das nix.
>
> Das Problem wird, wie oben schon geschrieben wurde, der kaputte Pfad
> sein.
>
> Oliver

Nö!
Das ist nicht bei allen Libs so, und es ist auch nicht egal.
Auf dem oben beschriebenen Weg kannst du Object-Files beliebigen Namens 
einfügen.
Auch die, deren Namen nicht mit lib beginnen, und das ist bei den von ST 
gelieferten 3rd-Party-Libs eher die Regel als die Ausnahme.

von hochsitzcola (Gast)


Lesenswert?

Danke schon mal für die Tipps, leider hilft mir keiner weiter. Ja, ich 
nutze die STM32 Workbench unter Eclipse. Ich habe jetzt die Library im 
GCC-Ordner verwiesen und den Pfad dahin absolut angegeben, die Lib fängt 
auch mit lib... an.

Das Ergebnis ist aber das selbe :-(
1
arm-none-eabi-gcc -mcpu=cortex-m3 -mthumb -mfloat-abi=soft -L"C:\CMSIS_5-develop\CMSIS_5-develop\CMSIS\Lib\GCC" -specs=nosys.specs -specs=nano.specs -T"../STM32F103C6Tx_FLASH.ld" -Wl,-Map=output.map -Wl,--gc-sections -o "LishuiFOC_01.elf" @"objects.list"  -llibarm_cortexM3l_math -lm
2
c:/gnu_arm/eclipse/plugins/fr.ac6.mcu.externaltools.arm-none.win32_1.16.0.201807130628/tools/compiler/bin/../lib/gcc/arm-none-eabi/7.2.1/../../../../arm-none-eabi/bin/ld.exe: cannot find -llibarm_cortexM3l_math
3
collect2.exe: error: ld returned 1 exit status

Wie wäre denn die Syntax in dem miscellaneous Bereich

Gruß
hochsitzcola

von hochsitzcola (Gast)


Lesenswert?

Hab's grad rausgefunden, man muß das "lib" vom Dateinamen der Lib 
weglassen...

Gruß
hochsitzcola

von Harry L. (mysth)


Lesenswert?

hochsitzcola schrieb:
> Wie wäre denn die Syntax in dem miscellaneous Bereich

Genau wie bei allen anderen Pfaden.
Nur eben, daß der Name der Object-Datei hier egal ist und nicht mit lib 
beginnen muß.
Du kannst die Datei doch einfach auswählen (duch anklicken) und dabei 
zwischen Datei im Workspace oder im Filesystem wählen.

von hochsitzcola (Gast)


Lesenswert?

nö, diese Buttons gibt es bei miscellaneous nicht, da kann man nur von 
Hand eintragen. Aber es geht jetzt ja über die Library Einträge.

Gruß
hochsitzcola

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.