Phrike Phrike - 2 months ago 13
C Question

C round function is throwing error: "...In function `main': greedy.c:(.text+0x95): undefined reference to `round'..."

I hope someone can help me. I am working through CS50x and am working on Pset1 - greedy. I have been banging my head against the wall for the last hour trying to figure out why I am getting the error

/tmp/greedy-46be96.o: In function `main':
greedy.c:(.text+0x95): undefined reference to `round'
clang: error: linker command failed with exit code 1 (use -v to see invocation)


whenever I attempt to compile my program. Below is my code. Any help will be greatly appreciated. I apologise if the question is vague, I have tried to be in depth. I have used man round in the terminal, and have searched everywhere, trying different solutions, but nothing has worked.

I am using this command to compile my code:

clang -o greedy greedy.c -lcs50

#include <stdio.h>
#include <cs50.h>
#include <math.h>

int main(void)
{
float owed;
float change;
float quarter = 0.25;
float dime = 0.10;
float nickel = 0.05;
float penny = 0.01;

do {
printf("How much change is owed?: ");
owed = GetFloat();

} while(owed <= 0);

change = round(owed * 100);
}

Answer

The following should work when you compile:

clang -o greedy greedy.c -lcs50 -lm

This links the math library for the compiler.