Forum: Mikrocontroller und Digitale Elektronik Problem mit Linker im Makefile


von Chris (Gast)


Lesenswert?

Hallo Leute,

ich habe folgendes Problem:
Der Linker "mplink" aus einem Makefile aufgerufen funktioniert nicht, 
kopiere ich die gleiche Zeile (der Ausgabe) in die Kommandozeile, geht 
es!! Pfad ist in beiden Fällen gleich, oder sollte gleich sein.

Was mich stutzig macht ist das "unrecognized input: C:/msys/w", Mplink 
hält wohl das /w (Option) für einen Pfad.

Geht weder mit MinGW-make noch Msys-make

Ausgabe make: GEHT NICHT
-------------
**** Build of configuration Default for project PICUSBIO ****

mingw32-make all
mplink /l"C:\mcc18\lib" "C:\mcc18\lkr\18f4455.lkr" user.o cdc.o main.o 
usb9.o usbctrltrf.o usbdrv.o usbdsc.o usbmmap.o 
/m"E:\Meurer\Develop\PIC\PICUSBIO\output\PICUSBIO.map" /w 
/o"PICUSBIO.cof"
MPLINK 4.11, Linker
Copyright (c) 2007 Microchip Technology Inc.
Error - unrecognized input: C:/msys/w
Errors    : 1

mingw32-make: *** [picusbio.hex] Error 1

Makefile-Auszug:
---------------
mplink /l"C:\mcc18\lib" "C:\mcc18\lkr\18f4455.lkr" $^ 
/m"$(OUTDIR)\PICUSBIO.map" /w /o"PICUSBIO.cof"

Kommandozeile: GEHT
--------------
E:\Meurer\Develop\PIC\PICUSBIO>mplink /l"C:\mcc18\lib" 
"C:\mcc18\lkr\18f4455.lkr
" user.o cdc.o main.o usb9.o usbctrltrf.o usbdrv.o usbdsc.o usbmmap.o 
/m"E:\Meur
er\Develop\PIC\PICUSBIO\output\PICUSBIO.map" /w /o"PICUSBIO.cof"
MPLINK 4.11, Linker
Copyright (c) 2007 Microchip Technology Inc.
Errors    : 0

MP2HEX 4.11, COFF to HEX File Converter
Copyright (c) 2007 Microchip Technology Inc.
Errors    : 0


Grüße,

Chris

von Chris (Gast)


Lesenswert?

Zusatz:
Habe noch vergessen die Rahmenbedingungen zu erwähnen:
Es geht um einen PIC mit C18 auf einem Windows-PC. MSYS und MAKE (von 
MinGW) sind installiert. MPLAB ist installiert, hier geht der Build ohne 
Probleme, schreibe aber gerade ein Makefile um Eclipse als IDE zu 
verwenden.

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Aus dem make oder Eclipse heraus ist anscheinend die Kommandozeile beim 
Aufruf des mplink zu lang und wird abgeschnitten.

Ich vermute C:/msys/w ist eine Kombination von Defaultpath und 
Kommandozeilenparameter /w.

Um diese Hypothese zu prüfen: Statt mplink mal ein Batchfile oder ein 
selbstgeschriebenes Programm einsetzen und die übergebene Kommandozeile 
anzeigen lassen.

von Chris (Gast)


Lesenswert?

Hallo,
vielen Dank für den Tipp, Stefan. Es lag zwar nicht direkt an der Länge 
der Kommandozeile, ABER an den Anführungszeichen!!!
Hab' mir die Zeile mit @echo anzeigen lassen und siehe: alle 
Anführungszeichen waren verschwunden.

So geht's, und dann linkt er auch:
mplink /l\"C:\mcc18\lib\" \"C:\mcc18\lkr\18f4455.lkr\" $^ 
/m\"PICUSBIO.map\" /w /o\"PICUSBIO.cof\"

statt:
mplink /l"C:\mcc18\lib" "C:\mcc18\lkr\18f4455.lkr" $^ /m"PICUSBIO.map" 
/w /o"PICUSBIO.cof"

very spooky!!!

Vielen Dank, Du hast mich auf die richtige Fährte gebracht.

Grüße,

CHris.

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.