[英]UNIX - makefile help!
寻求帮助编译我的程序如下。 我得到了“***停止。没有目标。” 在编译器缓冲区中键入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
这是我为编译器缓冲区键入的内容....但仍然会收到错误。
Makefile文件:
CC = /usr/bin/gcc
CFLAGS = -g -Wall -std=c99 -O2 -arch x86_64
刚刚尝试在空文件上制作-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
BTW,不确定那个-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)
其中$@
, $<
和$^
扩展到目标,第一个先决条件和所有先决条件,百分号是目标名称的通配符。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.