有人可以帮我为这个程序创建一个makefile吗?我已尝试过一个,但它不起作用......谢谢!
#include <string.h>
#include <stdlib.h>
#include "MakeArg.c"
int main()
{
char cmdline[256];
char **argv;
printf("doit# ");
for (;;)
{
scanf("%s",cmdline);
if (strcmp(cmdline,"q")==0)
break;
else
{
printf("doit# ");
if (fork()==0)
{
if (MakeArg(cmdline," ",&argv)>0)
execvp(argv[0],argv);
}
wait(NULL);
}
}
exit(0);
}
这是我现在所拥有的,但它不起作用:
CC = gcc
CFLAGS = -c -Wall -ansi -pedantic
SOURCES = MakeArg.c doit.c
OBJECTS = $(SOURCES:.c=.o)
EXECUTABLE = doit
all: $(EXECUTABLE)
$(EXECUTABLE): $(OBJECTS)
$(CC) -o $@ $(OBJECTS)
%.o: %.c $(HEADER)
$(CC) $(CFLAGS) -o $@ $<
clean:
rm f *.o $(EXECUTABLE)
答案 0 :(得分:2)
只是一些错误:
1)您还需要在已发布的文件中包含以下标题:
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
2)在你的makefile中的干净目标中,你错过了'f'前面的' - '。应该是rm -f。
3)另外,请确保在Makefile中的每个配方之前有一个制表符(而不是空格)。 很难说你是否从帖子中做过(或没做过)。
4)此外,建议不要包含.c文件。
尝试这样的事情:
CC = gcc
CFLAGS = -Wall -ansi -pedantic
SOURCES = MakeArg.c doit.c
OBJECTS = $(SOURCES:.c=.o)
EXECUTABLE = doit
all: $(EXECUTABLE)
$(EXECUTABLE): $(OBJECTS)
$(CC) -o $@ $^
%.o: %.c
$(CC) $(CFLAGS) -c $< -o $@
clean:
$(RM) -f $(OBJECTS) $(EXECUTABLE)
//
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
#include "MakeArg.h"
int main()
{
char cmdline[256];
char **argv;
printf("doit# ");
for (;;)
{
scanf("%s",cmdline);
if (strcmp(cmdline,"q")==0)
break;
else
{
printf("doit# ");
if (fork()==0)
{
if (MakeArg(cmdline," ",&argv)>0)
execvp(argv[0],argv);
}
wait(NULL);
}
}
exit(0);
}