Eclipse CDT: Linkerfehler

Gast #4763688
Lesenswert?
• ▲
▼
Habe folgenden Code unter Eclipse CDT erstellt
1
#include "stm32f4xx_hal.h"
2
#include "stm32f4xx_hal_gpio.h"
3
#include "stm32f4xx_hal_uart.h"
4

5
static void SystemClock_Config(void);
6
int main(void) {
7
  HAL_Init();
8

9

10

11
  unsigned char message[] = "Hello UART!\n";
12

13
  SystemClock_Config();
14
  __HAL_RCC_GPIOA_CLK_ENABLE();
15

16

17
  GPIO_InitTypeDef GPIOinit;
18
  GPIOinit.Pin = GPIO_PIN_0 | GPIO_PIN_1;
19
  GPIOinit.Mode = GPIO_MODE_AF_PP;
20
  GPIOinit.Pull = GPIO_PULLUP;
21
  GPIOinit.Speed = GPIO_SPEED_FAST;
22
  GPIOinit.Alternate = GPIO_AF8_UART4;
23
  HAL_GPIO_Init(GPIOD, &GPIOinit);
24

25
  UART_HandleTypeDef uart4;
26
  uart4.Instance = UART4;
27
  uart4.Init.BaudRate = 9600;
28
  uart4.Init.WordLength = UART_WORDLENGTH_8B;
29
  uart4.Init.StopBits = UART_STOPBITS_1;
30
  uart4.Init.Parity = UART_PARITY_NONE;
31
  uart4.Init.Mode = UART_MODE_TX_RX;
32
  HAL_UART_Init(&uart4);
33

34
  HAL_UART_Transmit(&uart4, message, 12, 100);
35

36
  while (1) {
37

38
  }
39
}
(Clock Config ist in der Uebersicht weggelassen)
Sources und Includes fuer die HAL-Library sind im Suchfad vorhanden.
Wenn ich nun bauen lasse, werden alle Typedefs erkannt, und die Sources 
fuer Clock Config, GPIO usw. sauber kompiliert. Der Linker beschwert 
sich danach allerdings, dass er kein Objectfile fuer die UART-Funktionen 
finden kann.

Suche nun schon ewig, wie ich Eclipse dazu bringen kann, den Code fuer 
den UART auch automatisch mit zu kompilieren, finde aber nix. Was mache 
ich falsch?
In der Shell kompilieren und das Objectfile per Hand an der richtigen 
Stelle ablegen ginge zwar, ist aber sicher nicht die elganteste Loesung.
Gast #4763829
Lesenswert?
• ▲
▼
Das hier kommt vom Linker:
1
/home/myhost/workspace/stm32_playground/Debug/../src/main.c:98: undefined reference to `HAL_UART_Init'
2
collect2: error: ld returned 1 exit status
3
make: *** [makefile:64: stm32_playground.elf] Fehler 1
Gast #4763875
Lesenswert?
• ▲
▼
Eclipse CDT mit dem STM32-Plugin legt beim Anlegen eines Projekts die 
komplette HAL-Library in einen Unterordner:

system/src/stm32f4-hal

Der Ordner ist auch im Suchpfad vom Compiler, und die Dateien fuer RCC 
und GPIO werden dort auch geunden. Index Rebuild habe ich probiert, 
macht leider keinen Unterschied.
#4768370
Lesenswert?
• ▲
▼
Eclipse unterscheidet bei Ordnern im Projekt zwischen normalen und 
Source-Ordnern. Nur in letzteren werden Source-Dateien auch kompiliert.

Schau dir halt mal die Ordnertypen an.

Oliver
P.S. Das gilt natürlich nur für von Eclipse gemanagte Projekte. Bei 
makefileprojekt musst du halt ins makefile schauen, und das entsprechend 
anpassen.

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.