我试图在pintos makefile上运行make,但是我一直得到对“floor”错误的未定义引用。生成文件如下。我正在用GCC4.6.1运行Ubuntu11.10。如有任何帮助,我们将不胜感激。

    all: setitimer-helper squish-pty squish-unix
    CC = gcc
    CFLAGS = -Wall -W
    LDFLAGS = -lm
    setitimer-helper: setitimer-helper.o
    squish-pty: squish-pty.o
    squish-unix: squish-unix.o

    clean:
          rm -f *.o setitimer-helper squish-pty squish-unix

~

最佳答案

-lm应该在LDLIBS中,而不是LDFLAGS中。
区别很重要,因为链接可执行文件的隐式规则是:

$(CC) $(LDFLAGS) n.o $(LOADLIBES) $(LDLIBS)

并且ld(由gcc调用)具有严格的从左到右依赖关系解析算法。

10-05 21:38