Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix 重新配置生成文件_Unix_Makefile - Fatal编程技术网

Unix 重新配置生成文件

Unix 重新配置生成文件,unix,makefile,Unix,Makefile,我对这个有点陌生,正在尝试建立一个相当大的项目。特别是,源代码正在执行这些行 gcc -Wall -W -c -o setitimer-helper.o setitimer-helper.c gcc -lm setitimer-helper.o -o setitimer-helper 这将创建链接器错误,因为根据 -lm现在必须位于对象文件之后 我需要知道在源代码中我可以在哪里找到并重新排列它。我想它在这里,但我不熟悉Unix CC = gcc CFLAGS = -Wall -W L

我对这个有点陌生,正在尝试建立一个相当大的项目。特别是,源代码正在执行这些行

gcc -Wall -W   -c -o setitimer-helper.o setitimer-helper.c
gcc -lm  setitimer-helper.o   -o setitimer-helper
这将创建链接器错误,因为根据 -lm现在必须位于对象文件之后

我需要知道在源代码中我可以在哪里找到并重新排列它。我想它在这里,但我不熟悉Unix

CC = gcc
CFLAGS = -Wall -W
LDFLAGS = -lm

all: setitimer-helper squish-pty squish-unix

%.o: %.c
    $(CC) -c $< -o $@

%: %.c
    $(CC) $(CFLAGS) $< $(LDFLAGS) -o $@

clean:
    rm -f *.o setitimer-helper squish-pty squish-unix
CC=gcc
CFLAGS=-Wall-W
LDFLAGS=-lm
all:setitimer helper squish pty squish unix
%.o:%.c
$(CC)-c$<-o$@
%:%c
$(CC)$(CFLAGS)$<$(LDFLAGS)-o$@
清洁:
rm-f*.o setitimer helper squish pty squish unix
我说得对吗?如果是,我如何解决这个问题。如果没有,我应该去哪里看


谢谢

将构建二进制文件的规则更改为将
$(LDFLAGS)
放在末尾

%: %.c
    $(CC) $(CFLAGS) $< -o $@ $(LDFLAGS)

试试`$(CC)$(CFLAGS)$<-o$@$(LDFLAGS)
。您的
%.o:%.c`规则将永远不会被使用,因为make可以使用其他规则从c文件创建二进制文件。您应该使构建看起来像<代码>gcc setitimer helper.c-o setitimer helper-lm。这是我的第一个猜测。我要试一试,谢谢。@PaulRooney好的,我手动运行该命令以确认它有效,然后在这里发布它是预期目标。此外,您可以删除这两个规则,并允许默认规则处理它。
gcc -Wall -W setitimer-helper.c -o setitimer-helper -lm