Library in Linker einbinden: Fehler not found

Gast #5710987
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
#5711002
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)
Angehängte Dateien:
#5711049
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.
Gast #5711080
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

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.