我正在there学习makefile的教程。 对于Makefile 2,有正确的代码:
CC=gcc
CFLAGS=-I.
hellomake: hellomake.o hellofunc.o
$(CC) -o hellomake hellomake.o hellofunc.o -I.
为什么它不能像这样工作:
hellomake: hellomake.o hellofunc.o
gcc -o hellomake hellomake.o hellofunc.o -I.
以下是错误:
hellomake.c:2:10: error: 'hellomake.h' file not found with <angled> include; use
"quotes" instead
#include <hellomake.h>
^~~~~~~~~~~~~
"hellomake.h"
1 error generated.
答案 0 :(得分:3)
在第一个&#34;工作&#34;你使用的makefile
$scope.chlist;
for (i = 0; i < $scope.chlist.length; i++)
{
total += $scope.chlist[i].quecount;
}
$scope.totque = total;
在将源文件编译为目标文件时将使用它,并告诉编译器(及其预先安装程序)当前目录应该添加到系统头文件目录列表中。
第二个makefile不会这样做。编译器在创建目标文件时没有额外的标志。因此编译器不会将当前目录添加到目录列表中。
第二个makefile中的CFLAGS=-I.
选项是链接时。到那时,目标文件已经创建(如果没有错误,应该已经创建),并且链接器根本不使用-I
标志。