gpt4 book ai didi

为 C 程序创建 makefile

转载 作者:行者123 更新时间:2023-11-30 18:52:55 25 4
gpt4 key购买 nike

有人可以帮我为这个程序创建一个 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)

最佳答案

只有一些错误:

1) 您还需要在发布的文件中包含以下 header :

#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);
}

关于为 C 程序创建 makefile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33967213/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com