Crash de ld.exe lors du linkage

Comment bien compiler avec avr-gcc

Le problème exposé dans ce sujet a été résolu.

Bonjour,

Après avoir longtemps joué avec l'Arduino, je me suis récemment mis à développez en C sur Atmega328. Mes premiers programmes fonctionnent très bien mais lorsque je les compile j'obtient toujours un message d'erreur m'indiquant que ld.exe "à cessé de fonctionner". (Pour info je suis sous Windows).

Voici un programme qui fait crasher le linker :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
#include <avr/io.h>
#include <util/delay.h>

#define BLINK_DELAY_MS 1000

int main (void)
{
 // set pin 0 of PORTB for output
 DDRB |= _BV(DDB0);

 while(1) {
  // set pin 0 high to turn led on 
  PORTB |= _BV(PORTB0);
  _delay_ms(BLINK_DELAY_MS);

  // set pin 0 low to turn led off 
  PORTB &= ~_BV(PORTB0);
  _delay_ms(BLINK_DELAY_MS);
 }
}

Pour compiler j'utilise ces commandes :

1
2
3
4
5
6
avr-gcc -Os -DF_CPU=16000000UL -mmcu=atmega328p -c -o main.o main.c

avr-gcc -mmcu=atmega328p main.o -o main

avr-objcopy -O ihex -R .eeprom main main.hex
echo Compile Done !

A chaque compilation, la commande avr-gcc -mmcu=atmega328p main.o -o main fait planter ld.exe : collect2.exe: error: ld returned 5 exit status. Ma version d'avr-gcc est tout simplement celle venant avec l'éditeur arduino (C:\Program Files (x86)\Arduino\hardware\tools\avr\bin).

Je cherche à régler ce problème, et la première question que je me pose est pourquoi ld.exe est appelé et non pas avr-ld.

Merci d'avance pour votre aide !

+0 -0

Merci pour ta réponse. J'ai vu la solution proposé et il est étonnant qu'une ancienne version de ld.exe fonctionne. N'y aurait-il pas alors une incompatibilité entre une ancienne version de ld.exe et une version plus récente d'avr-gcc ? De plus, dans le répertoire arduino il existe un fichier nommé avr-ld.exe. Ce ne serait pas celui-là qui devrait être utilisé ?

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte