我正在为嵌入式C代码库开发自动构建和持续集成环境。我使用Keil的Real View Compiler(Windows可执行文件)作为交叉编译器,并使用Cygwin构建整个持续集成环境。
Keil的文档说如果使用Cygwin,必须为编译器(即windows可执行文件)适当地设置CYGPATH环境变量,以了解包含文件之类的东西的Cygwin路径。 (http://www.keil.com/support/man/docs/ARMINTRO/armintro_pge1362395716635.htm)
makefile看起来像这样:
INCLUDE_DIR=-I$(PATH_TO_KEIL)/MDK-Middleware \
-I$(PATH_TO_KEIL)/ARM
a.o : a.c
echo
echo Compiling $<....;
echo cc -c $(INCLUDE_DIR) -o a.o a.c ;
cc -c $(INCLUDE_DIR) -o a.o a.c ;
当我执行时
$cc -c -I/cygdrive/c/Keil_v5/MDK-Middleware -I/cygdrive/c/Keil_v5/ARM -o a.o a.c
直接在Cygwin终端上,交叉编译成功。
然而,尽管将PATH_TO_KEIL定义为/ cygdrive / c / Keil_v5,但运行makefile编译器时会抱怨它无法找到包含文件。(/ cygdrive / c / Keil_v5 / ARM或C:\ Keil_v5中存在一个)
另外,如果它有帮助,如果我给出包含文件的相对路径,我在运行交叉编译时没有问题。
答案 0 :(得分:0)
您必须在Makefile中声明var,它将指向您的include目录。例如,
INCLUDE_DIR = c:/path/to/include/
因此你的makefile目标将是:
$armcc.exe -I$(INCLUDE_DIR) foo.c