2012-04-01 13 views
3

Ich versuche, make auf einem PintOS-Makefile auszuführen, aber ich bekomme immer wieder den undefinierten Verweis auf "floor" -Fehler. Das Makefile ist unten. Ich benutze Ubuntu 11.10 mit gcc 4.6.1. Jede Hilfe wird geschätzt.Undefinierter Verweis auf "floor" beim Ausführen von make in PintOS

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 

~

+0

Make wird die exakten Befehle drucken, die es aufruft. Was ist der genaue Befehl, der für GCC ausgeführt wird? –

+0

Wahrscheinlich wird die Bibliothek vor der Objektdatei übergeben, und der Linker befindet sich im Bedarfsmodus. Versuchen Sie mit 'gcc -o etwas something.o -lm' oder fügen Sie den Compilerflags' -Wl, - no-as-needed' hinzu. –

Antwort

8

-lm sollte in LDLIBS, nicht LDFLAGS.

Der Unterschied ist wichtig, weil die implizite Regel für die Verknüpfung von ausführbaren Dateien ist:

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

und ld (von GCC aufgerufen) hat eine strenge links nach rechts abhängigkeitsAuflösungsAlgorithmus.

Verwandte Themen