2015-11-28 50 views
-1

任何人都可以请帮我为这个程序创建一个makefile吗?我尝试过,但它不起作用......谢谢!为C程序创建一个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 [email protected] $(OBJECTS)  
%.o: %.c $(HEADER)  
$(CC) $(CFLAGS) -­o [email protected] $<  
clean:  
rm ­f *.o $(EXECUTABLE) 
+1

请发表你得到 – wizurd

+0

乌尔问问题的方式错误是太可怜了。请提供更多细节。你没有说错误是什么,从你的方面来看,似乎没有多少努力。 – solti

回答

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 [email protected] $^ 

%.o: %.c 
    $(CC) $(CFLAGS) -c $< -o [email protected] 

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); 
} 
+0

这个答案有帮助吗? – wizurd

+0

是的!非常感谢你! – Abc

+0

欢迎您,欢迎来到StackOverflow!请务必通过点击答案旁边的复选标记来接受回答您的问题的答案。 – wizurd