下面是我的makefile,这是gcc不喜欢的:
blah.exe:lex.yy.o
gcc –o blah.exe lex.yy.o
lex.yy.o:lex.yy.c
gcc –c lex.yy.c
lex.yy.c:blah.lex
flex blah.lex
如果我删除了除原始blah.lex文件之外的所有文件,则在运行make时会出现以下错误:
flex blah.lex
gcc ûc lex.yy.c
gcc: ûc: No such file or directory
make: *** [lex.yy.o] Error 1
现在,如果我按照这个顺序执行下面的命令,它都可以正常工作,并且可以编译。
flex blah.lex
gcc –c lex.yy.c
gcc –o blah.exe lex.yy.o
接下来,如果我运行make,它会说:
make: `blah.exe' is up to date.
如果存在*.o和*.exe文件,则这是正常响应。但是当需要创建这些文件时,为什么'make‘不起作用呢?
注意:我已经在makefile中放置了Tabs。flex是一个根据blah.lex的内容生成lex.yy.c的工具
发布于 2011-10-15 06:28:00
如果直接从Makefile
复制文本,则会出现以下问题:
在gcc -o ...
和gcc -c ...
行中使用的不是一个简单的破折号(ASCII45,Unicode U+002D),而是一个短划线(cp1252 0x96,Unicode U+2013)。将它们替换为简单的破折号。
要查看是否成功,请使用以下命令:
cat Makefile | tr -d '\r\n\t -~' | hexdump -C
这将从Makefile中提取所有“奇怪”的字节,并将它们打印到一个十六进制转储中。理想情况下,此命令的输出应如下所示:
00000000
在您的例子中,输出可能是:
00000000 ef bb bf e2 80 93 e2 80 93 |.........|
00000009
这意味着该文件是UTF-8编码的(前三个字节告诉您),其中还有另外两个UTF-8字符:两倍于e2 80 93
,这是U+2013的UTF-8编码。
https://stackoverflow.com/questions/7774152
复制相似问题