我有一个源文件asd.c
,并且出于某些原因,用于编译和链接此文件的内置规则不起作用。
这是我的超级简单的makefile:
asd.exe: asd.o
我遇到以下错误
cc -c -o asd.o asd.c
process_begin: CreateProcess(NULL, cc -c -o asd.o asd.c, ...) failed.
make (e=2): The system cannot find the file specified.
<builtin>: recipe for target 'asd.o' failed
mingw32-make: *** [asd.o] Error 2
答案 0 :(得分:3)
多种可能性:
make -f elsewhere/makefile
,在这种情况下找不到 asd.c 请注意,如果只有asd.exe: asd.o
行,它将建立名为asd.o
的可执行文件
您可以这样更改 makefile :
CC = gcc
asd.exe: asd.c
<tab>$(CC) -o asd.exe asd.c
答案 1 :(得分:1)
您简单的makefile就足够了,最可能的是make(1)
无法执行默认规则来编译.c
文件,默认编译器名为cc
并无法更改改为使用gcc
,则应将Makefile
更改为此:
CC=gcc
asd.exe: asd.o
应该起作用。您还可以创建从cc
到gcc
的链接(这没有什么害处,通常cc
是gcc
的别名,在具有gcc
的网站上安装为唯一的编译器)
实际上,您只需说出即可asd
make asd.exe
根本没有makefile,因为有一个隐式规则可以直接从其.c
源文件生成可执行文件。但是如果没有cc
,还需要指定编译器,因此命令应为:
make CC=gcc asd.exe
或者,如果要始终使用gcc
作为自己喜欢的编译器,只需创建一个环境变量CC
并在登录环境中为其分配gcc
(我假设您使用的是Windows --- .exe
扩展名---并且您知道如何在其中包含新的环境变量)