Forum: Compiler & IDEs Mehrere Versionen der Toolchain vorhalten ?


von Stefan Sczekalla (Gast)


Lesenswert?

Hi,

welches ist der beste ( vernünftigste ) Weg, wie man unter XP mehrere 
Versionen der (Win-) Avr Toolchain "vorhalten" kann ?

Vieleicht VM's ( XP - Linux ) ?

Ich möchte ungern die "alte" von 2006 "platt" machen um die älteren 
Projekte ohne Anpassung des Source-Codes weiter kompilieren zu können.

Viele Grüße,

Stefan

von Εrnst B. (ernst)


Lesenswert?

Hier hat PeDa ein Script zum automatisierten Umbenennen der 
Installationsverzeichnisse gepostet:
Beitrag "Automatisierte Umschaltung zwischen GCC Versionen"
Vielleicht hilft das ja.

Und hier hast du dieselbe Frage vor zwei Jahren schonmal gestellt, aber 
keine Hilfreiche Antwort bekommen :)
Beitrag "Koexistenz mehrerer WinAVR  Versionen ?"

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Wo ist denn das Problem?

Anstatt im Aufruf avr-gcc zu schreiben, gibt man eben den absoluten Pfad 
zum avr-gcc an. Bei make: Viele Makefiles verwenden/setzen die Variable 
CC für den C-Compiler, welche man überschreiben kann. Einfach mal nen 
Blick ins Makefile wagen, und make starten mit

make CC=pfad-zum-gcc/avr-gcc

Bei der Installation von WinAVR wird eh net mehr gemacht, als das 
Installationsverzeichnis zum Path hinzuzufügen, d.h. in Path kommt

<INSTALL-DIR>/bin und <INSTALL-DIR>/utils/bin

hinzu, und was vorne steht, wird eben zuerst gefunden.

Ich hab's im (selbst geschriebenen) Makefile so gelöst:
1
CPATH=
2
3
ifeq ($(GCC_VERSION),430)
4
    CPATH       = e:/WinAVR-20080512/bin/
5
endif    
6
ifeq ($(GCC_VERSION),422)
7
    CPATH       = e:/WinAVR-20071221/bin/
8
endif 
9
10
CC             = $(CPATH)avr-gcc -mmcu=$(MCU_TARGET)
11
LD             = $(CC)

Wenn GCC_VERSION undefiniert ist, wird die Standard-Installation 
genommen, und wenn GCC_VERSION=430 ist eben der gcc 4.3.0. So kann man 
dann auch die CFLAGS anpassen.

von Stefan Sczekalla (Gast)


Lesenswert?

Arghh - ich bin ja so Betriebsblind.

Das Umbennen des WINAVR-Verzeichnises habe ich garnicht ins Auge gefasst 
- weil ich garnicht damit gerechnet hab das das hinreichend sein könnte. 
( ... bin ein wenig verdorben durch die ganze Windows-Software die bei 
installationen gigabytes an zueinander inkompatiblen DLL's in einem 
System verteilen )

Ich probiere es mal auf dem Wege des Umbenennens...

Grüße,

Stefan

von Dirk (Gast)


Lesenswert?

Unter XP und mit NTFS File-System geht es auch ganz einfach:

Installiere die WinAvr's in verschiedene Verzeichnisse:

c:\WinAVR-20060421
c:\WinAVR-20070525
c:\WinAVR-20080610

Mit dem Befehl junction erzeugst du einen (nur mit NTFS verwendbaren) 
Hardlink, also ala Linux.

http://technet.microsoft.com/de-de/sysinternals/bb896768.aspx

Dann verwendest du verschiedene Batches

a) winavr-2006421.bat

junction -d c:\WinAVR
junction c:\WinAVR c:\WinAVR-20060421

b)WinAVR-20070525.bat

junction -d c:\WinAVR
junction c:\WinAVR c:\WinAVR-20070525

c) ...

In deinen makefiles verwendest du nur C:\Winavr oder verwendest
die globale path-Variable.

von Εrnst B. (ernst)


Lesenswert?

Und natürlich nach jedem Umschalten ein "make clean" nicht vergessen, 
sonst linkst du evtl Object-Files zusammen, die von verschiedenen 
Compilerversionen generiert wurden.
Das funktioniert zwar im Allgemeinen, kann aber auch recht seltsame 
Effekte ergeben.

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.