UNIX - makefile 求助!

发布于 2024-09-30 21:32:11 字数 801 浏览 1 评论 0原文

在下面寻求编译我的程序的帮助。我收到一条“***停止。没有目标”。在编译器缓冲区中输入 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

Looking for help compiling my program below. I'm getting a "***Stop. no Targets." error when typing in limit.makefile in the compiler buffer. Ideas?

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


}

Compile command: make -k -f limit.makefile
This is what I type for the compiler buffer....still get the error though.

Makefile:

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

动次打次papapa 2024-10-07 21:32:11

刚刚尝试在空文件上 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 -Wall -std=c99 -O2 -arch x86_64 limit.c

顺便说一句,不确定 -arch 标志。在我的 Linux 机器上无效。

Just tried that make -k -f myfile on an empty file and got your error.

If you just want it to work

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



all: test.c
    $(CC) $(CFLAGS) test.c

Note that the tab under all has to be a "real" tab.

I recommend you check out a makefile tutorial or just compile it from the command line.
gcc -g -Wall -std=c99 -O2 -arch x86_64 limit.c

BTW, not sure about that -arch flag. Not valid on my Linux box.

云淡月浅 2024-10-07 21:32:11

尝试

CC = /usr/bin/gcc
CFLAGS = -g -Wall -std=c99 -O2 -arch x86_64
OBJ = limit.o

%.o: %.c
    $(CC) -c -o $@ 
lt; $(CFLAGS)

Try

CC = /usr/bin/gcc
CFLAGS = -g -Wall -std=c99 -O2 -arch x86_64
OBJ = limit.o

%.o: %.c
    $(CC) -c -o $@ 
lt; $(CFLAGS)
树深时见影 2024-10-07 21:32:11

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's is more sophisticated, but here's a simpler one that is guaranteed to work for your one-file project:

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

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

You can run this with just make by itself.

べ映画 2024-10-07 21:32:11

您还没有在任何地方定义要构建的目标。您可以在命令行上执行此操作,使用命令

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

其中 $@$<$^ 扩展为分别是目标、第一个先决条件和所有先决条件,百分号是目标名称的通配符。

You've not defined what the target to build is anywhere. You can do that on the command line, using the command

make -k -f limit.makefile limit

and the implicit rules of make will compile limit.c into limit. Alternatively define a target in your makefile,

CC = /usr/bin/gcc
CFLAGS = -g -Wall -std=c99 -O2 -arch x86_64
limit: limit.o

The first target will be built by default, and make knows how to compile *.c to *.o and link object files so everything else is automatic.

If you're curious, the default rules are equivalent to (in GNU make)

%.o:%.c
    $(CC) $(CPPFLAGS) $(CFLAGS) -c -o $@ 
lt;
%:%.o
    $(CC) $(LDFLAGS) -o $@ $^ $(LDLIBS)

where $@, $< and $^ expand to the target, first prereq and all prereqs respectively, the percent signs are wildcards for the target name.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文