2013-07-21 3 views
0

Я пытаюсь« сделать »программу и все же сталкиваюсь с этими ошибками; Я использовал make -lm и даже сделал #include, но все-таки сталкиваюсь с той же проблемой. Я попытался установить приложение на Ubuntu и Debian, чтобы убедиться, что я удаляю сомнения в поврежденных библиотеках. Не получится!undefined ссылка на `ceilf '

nat_src_endpoint_ip.o: In function `__new': 
    /root/softwares/sweetspot-0.0.20/src/nat_src_endpoint_ip.c:95: undefined reference to `ceilf' 
    nat_src_endpoint_tcp.o: In function `__create': 
    /root/softwares/sweetspot-0.0.20/src/nat_src_endpoint_tcp.c:58: undefined reference to `ceilf' 
    nat_src_endpoint_udp.o: In function `__create': 
    /root/softwares/sweetspot-0.0.20/src/nat_src_endpoint_udp.c:59: undefined reference to `ceilf' 
    nat_src_endpoint_icmp.o: In function `__create': 
    /root/softwares/sweetspot-0.0.20/src/nat_src_endpoint_icmp.c:48: undefined reference to `ceilf' 
    collect2: ld returned 1 exit status 
    make[1]: *** [sweetspot] Error 1 
    make[1]: Leaving directory `/root/softwares/sweetspot-0.0.20/src' 
    make: *** [all] Error 2 
+8

Вы помещаете флаг '-lm' в конец вызова компоновщика? –

+1

покажите нам свой файл или команду, которую вы используете для сборки – Pradheep

+0

Это tar проекта (файл в недоступном для пользователя), слишком большой файл http://sourceforge.net/projects/sweetspot/files/sweetspot/0.0. 20/sweetspot-0.0.20.tar.gz/загрузить ............................................ .............. То, что я сделал, было запущено: «./configure», затем я запустил «make», который потерпел неудачу, затем я запустил «make -lm», который также потерпел неудачу – Undisputed007

ответ

0

Вы должны связаться с математической библиотекой. В Gcc это означает, что вы должны добавить -lm в командную строку связывания (если вы используете только одну командную строку, это означает, что эта командная строка предназначена для компиляции и компоновки).

+0

Я очень жаль, но я не понимаю вас полностью @Hivert, я покажу свой файл makefile ... Что я сделал, запустил make -lm в командной строке после выполнения ./configure – Undisputed007

+0

Я запустил '. ./configure; make'' на моем компьютере. Очевидно, что отсутствует '' -lm''. Однако, поскольку '' Makefile'' автоматически генерируется '' automake/autoconf'', это должно быть исправлено на этом уровне. К сожалению, я не специалист этих инструментов. Я постараюсь помочь, но я не уверен, что смогу. – hivert

+0

Спасибо. Я буду ждать, чтобы узнать результаты ваших эксплойтов, пытаясь исправить это до – Undisputed007