繁体   English   中英

UNIX - makefile帮助!

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM