我对此有点新意,并且正在尝试建立一个相当大的项目。特别是,源代码正在执行行
gcc -Wall -W -c -o setitimer-helper.o setitimer-helper.c
gcc -lm setitimer-helper.o -o setitimer-helper
这会产生链接器错误,因为根据此C: Undefined reference to floor -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
我说错了吗?如果是这样,我该如何解决这个问题。如果没有,我应该在哪里看?
感谢。
答案 0 :(得分:0)
更改规则以构建二进制文件以将$(LDFLAGS)
放在最后。
%: %.c
$(CC) $(CFLAGS) $< -o $@ $(LDFLAGS)
执行时,gcc
命令应如下所示。
gcc -Wall -W setitimer-helper.c -o setitimer-helper -lm