我正在尝试编译一个简单的hello world程序:
#include <stdio.h>
int main()
{
printf("Hello World!");
return 0;
}
使用此makefile:
TARGET = main.exe
OBJECT_01 = main.o
SOURCE_01 = main.c
$(TARGET): $(OBJECT_01)
gcc -g -o $(TARGET) $(OBJECT_01) -lstdc++
$(OBJECT_01) : $(SOURCE_01)
gcc -g -c $(SOURCE_01) -o $(OBJECT_01)
all : $(TARGET)
clean :
-rm $(TARGET) $(OBJS)
它编译成main.exe就好了,但是当我尝试使用./main.exe运行它时,它说该文件不存在并删除它。
我错过了一些cygwin包吗?
Upd:这是完整的终端命令序列:
andrey@andrey-PC ~/gcc-test
$ ls
main.c main.exe main.o makefile
andrey@andrey-PC ~/gcc-test
$ make clean
rm main.exe
andrey@andrey-PC ~/gcc-test
$ make
gcc -g -o main.exe main.o
andrey@andrey-PC ~/gcc-test
$ ls
main.c main.exe main.o makefile
andrey@andrey-PC ~/gcc-test
$ ./main.exe
-bash: ./main.exe: No such file or directory
andrey@andrey-PC ~/gcc-test
$ ls
main.c main.o makefile
答案 0 :(得分:0)
不是直接的答案,但希望对您有意义和有帮助:您的Makefile
太复杂了。
以下Makefile
将很好地为您完成工作:
CFLAGS+=-g
.PHONY: all
all: main
.PHONY: clean
clean:
$(RM) main.o main
(大多数Makefile
教程很糟糕,我还没有看到好的教程 - 抱歉我不得不说这样的咆哮,但我真的相信它很重要而且真实。)