GCC Linker Fehler

OP #2432579
Lesenswert?

Guten Tag,

ich habe Eclipse nun eingerichtet, nach dieser Anleitung
http://www.mikrocontroller.net/articles/MSP430_eclipse_helios_mspgcc4_gdb-proxy.
Folgendes Bild konnte ich nicht lesen:
http://www.mikrocontroller.net/articles/Datei:Msp430_eclipse_mspgcc4_gdbproxy_7.jpg

Nun bekomme ich diese Fehlermeldung:
 /mspgcc/bin/../lib/gcc/msp430/4.5.3/../../../../msp430/bin/ld.exe: 
cannot open linker script file memory.x: No such file or directory



Ich finde leider nichts im Netz dazu, kann mir jemand helfen?
vielleicht eine Pfadangabe falsch?
Die Dateien sind hier zu finden mspgcc\msp430\lib\ldscripts

Ich verwende msp430x11x1 in den Einstellungen, da ich leider nicht weiß 
welchen ich besitze.

mspgcc\msp430\lib\ldscripts hier ist dieser Chip nicht zu finden.

Bitte ich rätsele seit 2 Tagen dran rum :-( total frustrierend
Gast #2432908
Lesenswert?

Befindet sich eine memory.x Datei in deinem System?

Wenn nicht, sieh mal hier:
http://sourceforge.net/apps/mediawiki/mspgcc/index.php?title=Devel:git

da steht:

Note that binutils no longer includes memory-map or peripheral address 
information for any MSP430 chips; the msp430mcu package, or hand-crafted 
memory.x and periph.x files are required to link an executable.

Hast dann wohl das msp430mcu package nicht installiert. Siehe link...
Gast #2433308
Lesenswert?

Es ging aber um die x in -mmcu=msp430x11x1.
Wobei das Erste ein C oder F und das Zweite 0,1 oder 2 sein kann.

Eine Liste der vom gcc unterstützten Controller gibt der Aufruf mit 
Parameter : --target-help
#2434441
Lesenswert?

Versuche mal, das "linker script" mittels -T dem Linker mitzugeben:
1
       -T scriptfile
2
       --script=scriptfile
3
           Use scriptfile as the linker script.  This script replaces ld’s
4
           default linker script (rather than adding to it), so commandfile
5
           must specify everything necessary to describe the output file.
6
           If scriptfile does not exist in the current directory, "ld" looks
7
           for it in the directories specified by any preceding -L options.
#2434773
Lesenswert?

Tim Barl schrieb:
> Wie mitgeben?
> Wo mache ich das?

Wie das in Eclipse gemacht wird, weiß ich nicht.

Bei mir ist es der letzte Schritt im Makefile, und das Resultat sieht so 
aus:
1
msp430-gcc -save-temps -mmcu=msp430g2553 -T ../../linker-scripts/msp430.x -L ../../linker-scripts -Wl,-Map=build/xxx.map,--cref -Wl,--gc-sections -o build/xxx.elf build/a.o  build/b.o build/xxx.o
Gast #2781417
Lesenswert?

Tim Barl schrieb:
> Nun bekomme ich diese Fehlermeldung:
>  /mspgcc/bin/../lib/gcc/msp430/4.5.3/../../../../msp430/bin/ld.exe:
> cannot open linker script file memory.x: No such file or directory

Hatte das selbe Problem und es hat mich einige Stunden gekostet.
Die Ursache war bei mir, dass in Eclipse in den Projektsettings unter 
C/C++ Build->Settings->Tool Settings->Cross Settings der Pfad 
C:\Programm Files\mspgcc\bin als Basispfad eingetragen war. Der ist zwar 
korrekt, aber Eclipse nimmt diesen Pfad als Basis um den Pfad zur 
memory.x zusammenzubauen und kommt dabei mit dem Leerzeichen zwischen 
"Program Files" nicht klar. Leider geht das aus der Fehlermeldung nicht 
hervor....

Ich habe C:\Programme... eingetragen und jetzt läuft alles...

Gruß
Heinz
(Firma: Polytechnic of Turin) #4965609
Lesenswert?

Hi Leute,

ich weiß, dass dieses Thema sehr alt ist aber schreibe die Antwort für 
die Leute, die noch dafür interessiert sind ;)

Das Problem ist sehr einfach: Wenn der Linker aufgerufen wurde, ist der 
aktuelle Ordner nicht der richtige. So muss man im GCC Compiler 
spezifizieren, wo das Script ist. Das kann mit der -L Option gemacht 
werden.

Ich kopiere hier meine Makefile Datei:

# Require DEVICE to be specified
DEVICE          := MSP430F2274
EXAMPLE    := msp430x22x4_1
SOURCE_PATH   := $(HOMEDRIVE)/TI/workspace/prova
RELEASE_PATH   := $(SOURCE_PATH)/Debug

################## GCC Root Variable ###################
GCC_DIR       := $(HOMEDRIVE)/TI/msp430_gcc
GCC_MSP_INC_DIR := $(GCC_DIR)/include
LDDIR         := $(GCC_MSP_INC_DIR)/$(DEVICE)
######################################
GCC_BIN_DIR     := $(GCC_DIR)/bin
######################################
CC              := $(GCC_BIN_DIR)/msp430-elf-gcc
GDB    := $(GCC_BIN_DIR)/msp430-elf-gdb
######################################
CFLAGS          := -O2 -D__$(DEVICE)__ -mmcu=$(DEVICE) -g 
-ffunction-sections -fdata-sections -DDEPRECATED
LDFLAGS         := -T $(LDDIR).ld -mmcu=$(DEVICE) -g -Wl,--gc-sections 
-L $(GCC_MSP_INC_DIR)
INCLUDES        := -I $(GCC_MSP_INC_DIR)
######################################
SRC             := $(SOURCE_PATH)/$(EXAMPLE).c
EXOBJECT        := $(RELEASE_PATH)/$(EXAMPLE).o
EXOUTPUT        := $(RELEASE_PATH)/$(EXAMPLE).out
######################################

all: $(SRC)
  @echo ============================================
  @echo Compiling $(EXAMPLE).c
  @echo ============================================
  $(CC) $(INCLUDES) $(CFLAGS) -c $< -o $(EXOBJECT)
  @echo ============================================
  @echo Linking objects and generating output binary
  @echo ============================================
  $(CC) $(LDFLAGS) $(EXOBJECT) -o $(EXOUTPUT)

clean:
  @echo ============================================
  @echo Project cleared
  @echo ============================================
  @rm $(RELEASE_PATH)/$(EXAMPLE).o
  @rm $(RELEASE_PATH)/$(EXAMPLE).out


Viel Spaß
Ciao
Dado ;)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren