UNIX-makefile帮助!

UNIX-makefile帮助!,unix,compiler-construction,makefile,system,Unix,Compiler Construction,Makefile,System,在下面寻找编译我的程序的帮助。在编译器缓冲区中键入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

在下面寻找编译我的程序的帮助。在编译器缓冲区中键入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
试一试

CC=/usr/bin/gcc
CFLAGS=-g-壁面-std=c99-O2-拱门x86_64
OBJ=极限值
%.o:%.c
$(CC)-c-o$@$<$(CFLAGS)
试试看

CC=/usr/bin/gcc
CFLAGS=-g-壁面-std=c99-O2-拱门x86_64
OBJ=极限值
%.o:%.c
$(CC)-c-o$@$<$(CFLAGS)

您还没有定义要构建的目标是什么。您可以在命令行上使用

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$@$<
%:%
$(CC)$(LDFLAGS)-o$@$^$(LDLIBS)

其中,
$@
$您尚未定义要构建的目标。您可以在命令行上使用

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$@$<
%:%
$(CC)$(LDFLAGS)-o$@$^$(LDLIBS)

其中,
$@
$EboMike的更复杂,但这里有一个更简单的方法,可以保证适用于您的单文件项目:

CC = /usr/bin/gcc
CFLAGS = -g -Wall -std=c99 -O2 -arch x86_64

limit: limit.c
    $(CC) $(CFLAGS) -o limit limit.c

您只需使用
make
本身即可运行此功能。

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 myfile,但收到了错误

如果你只是想让它工作的话

CC= /usr/bin/gcc 
CFLAGS = -g -Wall -std=c99 -O2 -arch x86_64



all: test.c
    $(CC) $(CFLAGS) test.c
请注意,“全部”下的选项卡必须是“真实”选项卡

我建议您查看makefile教程,或者从命令行编译它。 gcc-g-墙体-std=c99-O2-拱x86_64极限.c


顺便说一句,我不太清楚那个-拱门标志。在我的Linux机器上无效。

刚刚在一个空文件上尝试了make-k-f myfile,但收到了错误

如果你只是想让它工作的话

CC= /usr/bin/gcc 
CFLAGS = -g -Wall -std=c99 -O2 -arch x86_64



all: test.c
    $(CC) $(CFLAGS) test.c
请注意,“全部”下的选项卡必须是“真实”选项卡

我建议您查看makefile教程,或者从命令行编译它。 gcc-g-墙体-std=c99-O2-拱x86_64极限.c


顺便说一句,我不太清楚那个-拱门标志。在我的Linux机器上无效。

您可以编辑您的问题并将make limit.makefile放入吗?您的makefile不包含任何需要编译的文件?limit.c是我需要编译的程序。我在哪里添加它?你能编辑你的问题并将make limit.makefile放入吗?你的makefile不包含任何需要编译的文件?limit.c是我需要编译的程序。我应该在哪里添加它?您应该在编译器调用中添加$(CFLAGS),否则它们将不被使用。您应该在编译器调用中添加$(CFLAGS),否则它们不会被使用,-arch标志用于Mac OS X。它允许您显式编译32位或64位体系结构,-arch标志用于Mac OS X。它允许您显式编译32位或64位体系结构。