为ARM编译usb bootloader的代码时,我遇到了致命的错误:打开依赖文件

时间:2016-01-23 02:39:13

标签: c arm cross-compiling bootloader

我收到错误打开依赖项文件。 (如下所示)我从sparkfun这里下载了所有代码https://www.sparkfun.com/tutorials/94,它应该是编译的。你认为这个错误是由Windows 10引起的吗?

Compiling C (ARM-only): ../lib/irq.c
    arm-elf-gcc -c -mcpu=arm7tdmi-s -mthumb-interwork -I. -gdwarf-2 -DROM_RUN  -D__WinARM__ -I ../lib/ -Os -Wall -Wcast-align -Wpointer-arith -Wswitch -Wredundant-decls -Wreturn-type -Wshadow -Wunused -Wa,-adhlns=../lib/irq.lst  -I../lib -I../screens -I../LPCUSB -Wcast-qual -MD -MP -MF .dep/irq.o.d -Wnested-externs -Wimplicit -std=gnu99 -Wmissing-prototypes  -Wstrict-prototypes -Wmissing-declarations ../lib/irq.c -o ../lib/irq.o 
    ../lib/irq.c:156: fatal error: opening dependency file .dep/irq.o.d: No such file or directory
    compilation terminated.
    make.exe: *** [../lib/irq.o] Error 1

1 个答案:

答案 0 :(得分:0)

在Makefile中,这是失败的行:

-include $(shell mkdir .dep 2>/dev/null) $(wildcard .dep/*)

我不确定为什么它会失败,因为它有领先的" - "如果文件不存在,应告诉它不要失败。

在irq.c的第一次编译之后,irq.o.d存在,并且包含irq.c的头文件依赖项,以便后续更改头文件将导致重新编译irq.c。这种魔法的发生是因为传递给编译器的GENDEPFLAGS(-MD等)。

如果' - '在你的make中没有工作,你可以用#作为初始编译注释掉include行,然后取消注释该行。或者你可以把它注释掉并使其干净;每次更改头文件时都会生成。