Я пытаюсь установить PintOS на свою локальную машину Ubuntu 14.04. Когда я пытаюсь запустить make для компиляции утилит. Я получаю следующую ошибку.Как мне изменить свой файл makefile, чтобы избежать неопределенной ссылки на функцию в библиотеке maths?
[email protected]:~/os/pintos/src/utils$ ls
backtrace Makefile pintos pintos.~1.55.~ pintos-mkdisk setitimer-helper.o squish-unix.c
CVS Makefile~ pintos~ pintos-gdb setitimer-helper.c squish-pty.c
[email protected]:~/os/pintos/src/utils$ make
gcc -lm setitimer-helper.o -o setitimer-helper
setitimer-helper.o: In function `main':
setitimer-helper.c:(.text+0xbe): undefined reference to `floor'
collect2: error: ld returned 1 exit status
make: *** [setitimer-helper] Error 1
[email protected]:~/os/pintos/src/utils$
математик библиотека (для <math.h>
заголовка, который используется в setitimer-helper.c
) не получает связан должным образом. Когда я заглядываю в Makefile, это результат.
[email protected]:~/os/pintos/src/utils$ cat Makefile
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
Скажите, пожалуйста, как исправить это. Кстати, я использую gcc-4.8.6.
Существует ряд вопросов, которые являются дубликатом. Проблема заключается в перечислении библиотек перед объектными файлами - ответ «нет». –
Но вопрос в том, как вы это делаете, изменяя Makefile. – Ankit
OK; тогда должно быть редактирование вопроса ... Примерно по тому, что я только что сделал. Вы можете решить, хотите ли вы, чтобы ваша математическая библиотека была единственной или множественной. Кроме того, не забудьте сообщить об ошибке разработчикам Pintos; существует так много платформ, где make-файл не будет работать, как там, где он работает (или он работает случайно - многие версии 'make' put' $ {LDFLAGS} 'и' $ {LDLIBS} 'после объектных файлов на линии связи, которая бы сработала). Другие не видят вашей проблемы. –