寻求帮助编译下面的程序。我收到一条“***停止。没有目标”。在编译器缓冲区中输入 limit.makefile 时出错。有想法吗?
int main(int argc, char *argv[]) {
struct rlimit limit;
limit.rlim_cur = 60000;
limit.rlim_max = 60000;
if (setrlimit(RLIMIT_FSIZE, &limit) == -1){
perror("Error preventing core dump, errno=%d\n", errno);
exit(1);
}
else {
printf("The current core limit is %ll.\n", limit.rlim_cur);
printf("The core max limit is %ll.\n", limit.rlim_max);
exit(0);
}
if (getrlimit(RLIMIT_FSIZE, &limit) == -1){
printf("getlimit() failed with errno=%d\n", errno);
exit(1);
}
}
编译命令:
make -k -f limit.makefile
这是我为编译器缓冲区输入的内容......但仍然收到错误。
生成文件:
CC = /usr/bin/gcc
CFLAGS = -g -Wall -std=c99 -O2 -arch x86_64
刚刚尝试在空文件上执行 make -k -f myfile 并收到错误。
如果你只是想让它发挥作用
CC= /usr/bin/gcc
CFLAGS = -g -Wall -std=c99 -O2 -arch x86_64
all: test.c
$(CC) $(CFLAGS) test.c
请注意,all 下的选项卡必须是“真实”选项卡。
我建议您查看 makefile 教程或直接从命令行编译它。 gcc -g -Wall -std=c99 -O2 -arch x86_64 limit.c
顺便说一句,不确定 -arch 标志。 在我的 Linux 机器上无效。
尝试
CC = /usr/bin/gcc
CFLAGS = -g -Wall -std=c99 -O2 -arch x86_64
OBJ = limit.o
%.o: %.c
$(CC) -c -o $@ $< $(CFLAGS)
EboMike 的更复杂,但这里有一个更简单的,保证适用于您的单文件项目:
CC = /usr/bin/gcc
CFLAGS = -g -Wall -std=c99 -O2 -arch x86_64
limit: limit.c
$(CC) $(CFLAGS) -o limit limit.c
您只需使用
make
即可运行此程序。
您还没有在任何地方定义要构建的目标。您可以使用以下命令在命令行上执行此操作
make -k -f limit.makefile limit
并且
make
的隐式规则会将limit.c
编译为limit
。或者在你的 makefile 中定义一个目标,
CC = /usr/bin/gcc
CFLAGS = -g -Wall -std=c99 -O2 -arch x86_64
limit: limit.o
第一个目标将默认构建,并且 make 知道如何将
*.c
编译为 *.o
并链接目标文件,因此其他一切都是自动的。
如果您好奇,默认规则相当于(在 GNU make 中)
%.o:%.c
$(CC) $(CPPFLAGS) $(CFLAGS) -c -o $@ $<
%:%.o
$(CC) $(LDFLAGS) -o $@ $^ $(LDLIBS)
其中
$@
、$<
和 $^
分别扩展到目标、第一个先决条件和所有先决条件,百分号是目标名称的通配符。