0
votes

I have a C project and I am using NMake to compile the project. However, I am having an error and i have been finding it difficult to figure out what is causing it. Does anyone know how to debug a visual studio C project compiled using nmake or even know what is causing the error below?:

Output file

------ Rebuild All started: Project: DirectTopUp, Configuration: Debug Win32 ------

Microsoft (R) Program Maintenance Utility Version 10.00.30319.01 Copyright (C) Microsoft Corporation. All rights reserved.

del obj*.o

sed: file GCCErrFix.sed line 1: unknown command: `<'

C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\Microsoft.MakeFile.Targets(43,5): error MSB3073: The command "NMAKE /f make/makefile /a 2<&1 | sed -u -f GCCErrFix.sed " exited with code 1.

========== Rebuild All: 0 succeeded, 1 failed, 0 skipped ==========

MakeFile

    path=c:\windows;c:\windows\system32;$(GCCROOT)\build\bin

#NAME    = Direct-Top-Up
NAME    = JOSECARD

GCCDIR    = $(GCCROOT)\build
GCCBIN    = $(GCCDIR)\bin
GCCLIB    = $(GCCDIR)\lib
GCCLIBELF = $(GCCDIR)\libelf
GCCINC    = $(GCCDIR)\include 

LOCSRC    = .\src                           
LOCOBJ    = .\obj  
LOCOUT    = .\out                           
LOCINC    = .\src      
LOCLIB    = ..\lib

JOSINCDIR = $(JOSAPIINC)
JOSLIBDIR = $(JOSAPILIB)

LIB        = $(GCCLIB)\libc.a
JOSLIB    =  pc1000api(v21)  
WLSLIB    =  pc1000idwlsapi(v23)

ASM       = $(GCCDIR)\BIN\arm-elf-as  
GCC       = $(GCCDIR)\BIN\arm-elf-gcc -O3 -I$(GCCINC) -I$(JOSINCDIR) -I$(LOCINC) -mlittle-endian -mcpu=arm9 -c
LINK      = $(GCCDIR)\BIN\arm-elf-ld -Tldscript -L$(GCCLIB) -L$(GCCLIBELF) -L$(JOSLIBDIR)
CCFLAG    = -O3 -I..\build\include -mlittle-endian -mcpu=arm9


OBJ    = $(LOCOBJ)\init.o \
         $(LOCOBJ)\JOSECARD.o \
         $(LOCOBJ)\mamenus.o \
         $(LOCOBJ)\madevices.o \
         $(LOCOBJ)\magraphics.o \
         $(LOCOBJ)\malib.o \
         $(LOCOBJ)\mamessage.o \
         $(LOCOBJ)\maoper.o \
         $(LOCOBJ)\matrans.o \
         $(LOCOBJ)\rijndael-alg-ref.o \
         $(LOCOBJ)\rijndael-api-ref.o \
         $(LOCOBJ)\maui.o \
         $(LOCOBJ)\madisplay.o \
         $(LOCOBJ)\mafiles.o \
         $(LOCOBJ)\mabatch.o \
         $(LOCOBJ)\digibcd.o \
         $(LOCOBJ)\digicrypt.o \
         $(LOCOBJ)\digimsg.o \
         $(LOCOBJ)\digipkt.o \
         $(LOCOBJ)\maprinter.o \
         $(LOCOBJ)\mareports.o \
         $(LOCOBJ)\mareceipt.o \
         $(LOCOBJ)\maprotocol.o \
         $(LOCOBJ)\GPRScomms.o \
         $(LOCOBJ)\POSConvert.o \
         $(LOCOBJ)\debug.o 


#  ADS-ROM version
$(NAME).elf: $(OBJ)
    @echo Linking All Modules...
    $(LINK) -o $(NAME).elf $(OBJ) -l$(WLSLIB) -l$(JOSLIB) -lc -lgcc  
    elftobin $(NAME).elf $(LOCOUT)\$(NAME).bin PC1000---APP


# ASM file
$(LOCOBJ)\init.o: $(LOCSRC)\init.s
    @echo Assembling...init.s
    @$(ASM) $(LOCSRC)\init.s -o $(LOCOBJ)\init.o


#  C files
$(LOCOBJ)\JOSECARD.o: $(LOCSRC)\JOSECARD.c
    @echo Compiling...JOSECARD.c
    @$(GCC) $(LOCSRC)\JOSECARD.c -o $(LOCOBJ)\JOSECARD.o 

$(LOCOBJ)\mamenus.o: $(LOCSRC)\mamenus.c
    @echo Compiling...mamenus.c
    @$(GCC) $(LOCSRC)\mamenus.c -o $(LOCOBJ)\mamenus.o

$(LOCOBJ)\madevices.o: $(LOCSRC)\madevices.c
    @echo Compiling...madevices.c
    @$(GCC) $(LOCSRC)\madevices.c -o $(LOCOBJ)\madevices.o

$(LOCOBJ)\magraphics.o: $(LOCSRC)\magraphics.c
    @echo Compiling...magraphics.c
    @$(GCC) $(LOCSRC)\magraphics.c -o $(LOCOBJ)\magraphics.o

$(LOCOBJ)\malib.o: $(LOCSRC)\malib.c
    @echo Compiling...malib.c
    @$(GCC) $(LOCSRC)\malib.c -o $(LOCOBJ)\malib.o

$(LOCOBJ)\mamessage.o: $(LOCSRC)\mamessage.c
    @echo Compiling...mamessage.c
    @$(GCC) $(LOCSRC)\mamessage.c -o $(LOCOBJ)\mamessage.o

$(LOCOBJ)\maoper.o: $(LOCSRC)\maoper.c
    @echo Compiling...maoper.c
    @$(GCC) $(LOCSRC)\maoper.c -o $(LOCOBJ)\maoper.o

$(LOCOBJ)\matrans.o: $(LOCSRC)\matrans.c
    @echo Compiling...matrans.c
    @$(GCC) $(LOCSRC)\matrans.c -o $(LOCOBJ)\matrans.o

$(LOCOBJ)\rijndael-alg-ref.o: $(LOCSRC)\rijndael-alg-ref.c
    @echo Compiling...rijndael-alg-ref.c
    @$(GCC) $(LOCSRC)\rijndael-alg-ref.c -o $(LOCOBJ)\rijndael-alg-ref.o

$(LOCOBJ)\rijndael-api-ref.o: $(LOCSRC)\rijndael-api-ref.c
    @echo Compiling...rijndael-api-ref.c
    @$(GCC) $(LOCSRC)\rijndael-api-ref.c -o $(LOCOBJ)\rijndael-api-ref.o

$(LOCOBJ)\maui.o: $(LOCSRC)\maui.c
    @echo Compiling...maui.c
    @$(GCC) $(LOCSRC)\maui.c -o $(LOCOBJ)\maui.o

$(LOCOBJ)\madisplay.o: $(LOCSRC)\madisplay.c
    @echo Compiling...madisplay.c
    @$(GCC) $(LOCSRC)\madisplay.c -o $(LOCOBJ)\madisplay.o

$(LOCOBJ)\mafiles.o: $(LOCSRC)\mafiles.c
    @echo Compiling...mafiles.c
    @$(GCC) $(LOCSRC)\mafiles.c -o $(LOCOBJ)\mafiles.o

$(LOCOBJ)\mabatch.o: $(LOCSRC)\mabatch.c
    @echo Compiling...mabatch.c
    @$(GCC) $(LOCSRC)\mabatch.c -o $(LOCOBJ)\mabatch.o

$(LOCOBJ)\digibcd.o: $(LOCSRC)\digibcd.c
    @echo Compiling...digibcd.c
    @$(GCC) $(LOCSRC)\digibcd.c -o $(LOCOBJ)\digibcd.o

$(LOCOBJ)\digicrypt.o: $(LOCSRC)\digicrypt.c
    @echo Compiling...digicrypt.c
    @$(GCC) $(LOCSRC)\digicrypt.c -o $(LOCOBJ)\digicrypt.o

$(LOCOBJ)\digimsg.o: $(LOCSRC)\digimsg.c
    @echo Compiling...digimsg.c
    @$(GCC) $(LOCSRC)\digimsg.c -o $(LOCOBJ)\digimsg.o

$(LOCOBJ)\digipkt.o: $(LOCSRC)\digipkt.c
    @echo Compiling...digipkt.c
    @$(GCC) $(LOCSRC)\digipkt.c -o $(LOCOBJ)\digipkt.o

$(LOCOBJ)\maprinter.o: $(LOCSRC)\maprinter.c
    @echo Compiling...maprinter.c
    @$(GCC) $(LOCSRC)\maprinter.c -o $(LOCOBJ)\maprinter.o

$(LOCOBJ)\mareports.o: $(LOCSRC)\mareports.c
    @echo Compiling...mareports.c
    @$(GCC) $(LOCSRC)\mareports.c -o $(LOCOBJ)\mareports.o

$(LOCOBJ)\mareceipt.o: $(LOCSRC)\mareceipt.c
    @echo Compiling...mareceipt.c
    @$(GCC) $(LOCSRC)\mareceipt.c -o $(LOCOBJ)\mareceipt.o

$(LOCOBJ)\maprotocol.o: $(LOCSRC)\maprotocol.c
    @echo Compiling...maprotocol.c
    @$(GCC) $(LOCSRC)\maprotocol.c -o $(LOCOBJ)\maprotocol.o

$(LOCOBJ)\GPRScomms.o: $(LOCSRC)\GPRScomms.c
    @echo Compiling...GPRScomms.c
    @$(GCC) $(LOCSRC)\GPRScomms.c -o $(LOCOBJ)\GPRScomms.o

$(LOCOBJ)\POSConvert.o: $(LOCSRC)\POSConvert.c
    @echo Compiling...POSConvert.c
    @$(GCC) $(LOCSRC)\POSConvert.c -o $(LOCOBJ)\POSConvert.o

$(LOCOBJ)\debug.o: $(LOCSRC)\debug.c
    @echo Compiling...debug.c
    @$(GCC) $(LOCSRC)\debug.c -o $(LOCOBJ)\debug.o

clean:
    del obj\*.o
#   del *.db
#   del *.blk
#   del *.db2
#   del *.out
</pre>
1
Please show us the full Makefile. It looks like you need to debug your compile, not your actual code. - merlin2011
@merlin2011 that is correct. - Nation
@merlin2011 the makefile was added - Nation
I do not see any calls to sed inside the Makefile, and your error includes sed. It sounds like you have something wrapping the nmake command. Have you tried opening the Visual Studio Command Prompt and directly calling nmake in the directory with the Makefile? - merlin2011
I found out what was causing the problem. There was an error in the GCCErrFix.sed file. I use the GCCErrFix.sed help me jump to a line error in visual studio. Thanks for that info, re: using Visual Studio Command Prompt, I have never used it before to run nmake. Will use if for future testing - Nation

1 Answers

0
votes

The sed -u -f GCCErrFix.sed should be used when stepping into an compilation error in visual studio. The sed file being used when calling the nmake had duplicated start block after the Header and was throwing an error. Removing the duplicate resolve the problem.