【发布时间】:2014-06-26 06:21:21
【问题描述】:
我有一个 C 项目,我正在使用 NMake 来编译项目。但是,我遇到了一个错误,我发现很难弄清楚是什么原因造成的。 有谁知道如何调试使用 nmake 编译的 Visual Studio C 项目,甚至知道是什么导致了以下错误?:
输出文件
------ 重建全部启动:项目:DirectTopUp,配置:Debug Win32 ------
Microsoft (R) 程序维护实用程序版本 10.00.30319.01 版权所有 (C) 微软公司。保留所有权利。
del obj*.o
sed:文件 GCCErrFix.sed 第 1 行:未知命令:`
C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\Microsoft.MakeFile.Targets(43,5): error MSB3073: The command "NMAKE /f make/makefile /a 2
==========全部重建:0成功,1失败,0跳过==========
制作文件
路径=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>
【问题讨论】:
-
请向我们展示完整的 Makefile。看起来你需要调试你的编译,而不是你的实际代码。
-
@merlin2011 是正确的。
-
@merlin2011 makefile 已添加
-
我在 Makefile 中看不到任何对
sed的调用,并且您的错误包括sed。听起来你有一些东西包装了nmake命令。您是否尝试过打开 Visual Studio 命令提示符并直接调用 Makefile 目录中的nmake? -
我发现了导致问题的原因。 GCCErrFix.sed 文件中存在错误。我使用 GCCERrFix.sed 帮助我跳转到 Visual Studio 中的行错误。感谢您提供该信息,回复:使用 Visual Studio 命令提示符,我以前从未使用过它来运行 nmake。将使用 if 进行未来测试
标签: c visual-studio-2010 sed nmake