在运行PintOS的make命令时出现了“获取到`floor'未定义的引用”的错误提示。

4

我试图在PintOS的makefile上运行make命令,但是一直出现“未定义对‘floor’的引用”错误。下面是makefile文件。我正在运行gcc 4.6.1版本的Ubuntu 11.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

~


Make命令将打印出它正在调用的确切命令。那么它为GCC运行的确切命令是什么? - Oliver Charlesworth
可能是库在目标文件之前传递,链接器处于需要模式。尝试使用 gcc -o something something.o -lm,或将 -Wl,--no-as-needed 添加到编译器标志中。 - Daniel Fischer
1个回答

8

-lm 应该在 LDLIBS 中,而不是 LDFLAGS

这个区别很重要,因为链接可执行文件的隐含规则是:

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接