2012-02-22 4 views
-1

Я хочу сделать простую функцию с участием sqrt(), floor() и pow(). Итак, я включил <math.h>. Когда я пытаюсь использовать свою функцию, моя программа говорит, что sqrt() и floor() не существует. Я triple проверил мои файлы и переписал их, но все равно дает ту же ошибку. Чтобы проверить, нет ли чего-то неправильного в каталоге <math.h>, я сделал еще один отдельный файл, который рассчитал то же самое, и он сработал. Я сейчас не знаю. Что я делаю не так?Включая файлы в C

код из отсутствия программы функционирования:

#include <math.h> 
#include "sumofsquares.h" 

int sumofsquares(int x){ 
    int counter = 0; 
    int temp = x; 

    while(temp != 0){ 
     temp = temp - (int)pow(floor(sqrt(temp)), 2); 
     counter ++; 
    } 
    return counter; 
} 

Рабочий тестовый файл:

ошибка это

/tmp/ccm0CMTL.o: В функции sumofsquares ': /home/cs136/cs136Assignments/a04/sumofsquares.c:9: undefined reference to sqrt' /home/cs136/cs136Assignments/a04/sumofsquares.c:9: не определено ссылка на полу»collect2: л.д. возвращается 1 выход status`

Я использую RunC на виртуальной ОС Ubuntu для компиляции

+5

Какова точная ошибка? Как вы компилируете свои программы? – cnicutar

+0

@cnicutar: ошибка в этом '/tmp/ccm0CMTL.o: В функции' sumofsquares ': /home/cs136/cs136Assignments/a04/sumofsquares.c:9: неопределенная ссылка на 'sqrt' /home/cs136/cs136Assignments/a04/sumofsquares.c: 9: неопределенная ссылка на «пол» collect2: ld возвращен 1 статус выхода' Я использую runC на виртуальной Ubuntu OS для усложнения. – user1222282

+0

* проблема * связь * проблема * включая * проблема. Проверьте ответ cnicutar. – karlphillip

ответ

8

Вероятно, вам не хватает аргумента -lm до gcc, необходимого для связывания математической библиотеки. Попробуйте:

gcc ... <stuff> ... -lm 

Есть по крайней мере две C FAQs отношение к вашей проблеме:

+0

Я использую RunC, так что это не относится ко мне. :( – user1222282

+1

«RunC - простая (и несколько грубая) система, которая поможет вам использовать C++ в качестве языка сценариев в Unix». Что мы имеем здесь, является доказательством этой грубости. Вам нужно будет выяснить, как настроить RunC на правильную ссылку ваш скрипт. –