You need to link with the math library:

gcc -o sphere sphere.c -lm

The error you are seeing: error: ld returned 1 exit status is from the linker ld (part of gcc that combines the object files) because it is unable to find where the function pow is defined.

Including math.h brings in the declaration of the various functions and not their definition. The def is present in the math library libm.a. You need to link your program with this library so that the calls to functions like pow() are resolved.

Answer from codaddict on Stack Overflow
Discussions

[C Programming] Undefined reference to pow and sqrt

you have to call gcc with -lm: https://stackoverflow.com/questions/1033898/why-do-you-have-to-link-the-math-library-in-c

More on reddit.com
🌐 r/learnprogramming
5
3
November 22, 2015
"Undefined reference to pow" error after including <math.h> and the GCC option -lm
Im not even sure why that is the case, but I think you have to link the library as last argument. Try gcc -o output hexConverter.c -lm More on reddit.com
🌐 r/C_Programming
9
2
December 16, 2021
c - pow function not working properly in Code::Blocks IDE - Stack Overflow
I have got a question from my junior and I can't fix it. Following is the code he is using in the Code::Blocks IDE just downloaded from official site of Code::Blocks. It's a hello world console pr... More on stackoverflow.com
🌐 stackoverflow.com
April 11, 2022
ide - c language math library error when compiling (pow) - Stack Overflow
I can compile the program in my computer with visual 08 and codeblocks, but then I try to use my school IDE I get some errors. /tmp/ccD2ZV6Q.o: In function `main': knit2.c:(.text+0x8d): undefined reference to `pow' knit2.c:(.text+0xce): undefined reference to `pow' knit2.c:(.text+0x11b): undefined ... More on stackoverflow.com
🌐 stackoverflow.com
June 28, 2020
🌐
Cprogramming
cboard.cprogramming.com › c-programming › 181675-issue-math-functions.html
issue with math functions
February 26, 2025 - It could have been the missing -lm that caused it not to work with variables for you (the compiler probably replaced pow(constant, constant) with a constant value without a call to pow())
🌐
LinuxQuestions.org
linuxquestions.org › questions › programming-9 › c-program-error-undefined-reference-to-pow-4175698172
C Program error : undefined reference to pow
July 22, 2021 - I typed a C program from the Internet that calculates Compound Interest. One of the lines in the program reads CIFuture = PAmount*(pow((1+ROI/100),
🌐
Reddit
reddit.com › r/learnprogramming › [c programming] undefined reference to pow and sqrt
r/learnprogramming on Reddit: [C Programming] Undefined reference to pow and sqrt
November 22, 2015 -

I'm trying to do my homework which is to make a program that calculates a hypotenuse, given two cathetus entered by the user. This is the code:

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

int main(void) {

    float primeiroCateto;
    float segundoCateto;
    float hipotenusa;

    setlocale(LC_ALL, "Portuguese");

    printf("Digite o valor do primeiro cateto:\n");
    scanf("%f", &primeiroCateto);
    printf("Digite o valor do segundo cateto:\n");
    scanf("%f", &segundoCateto);

    hipotenusa = sqrt(pow(primeiroCateto, 2) + pow(segundoCateto, 2));

    printf("A hipotenusa é igual a:\n%.2f", hipotenusa);
    return 0;
}

The problem is that when i try to copile the code using:

gcc -Wall -Wextra -o Atividade2_exercício5 Atividade2_exercício5.c

This error shows up:

/tmp/ccFsAgvS.o: In function `main':
Atividade2_exercício5.c:(.text+0x82): undefined reference to `pow'
Atividade2_exercício5.c:(.text+0x9d): undefined reference to `pow' 
Atividade2_exercício5.c:(.text+0xa7): undefined reference to `sqrt'
collect2: error: ld returned 1 exit status

So what to do now? (i'm using vccode by the way)

🌐
IncludeHelp
includehelp.com › c-programming-questions › error-undefined-reference-to-pow-in-linux.aspx
Error - undefined reference to 'pow' with C program in GCC Linux
C - Call by Reference Vs. Call by Value ... C Vs. Embedded C ... C - Copy Two Bytes Int. to Byte Buffer ... This is a common error while compiling C program in GCC/G++ Linux. This error occurs when you are using pow function to calculate power of a number in your programs.
🌐
Ubuntu Forums
ubuntuforums.org › showthread.php
undefined reference to 'pow'
April 29, 2008 - The meeting point for the Ubuntu community
Find elsewhere
🌐
Reddit
reddit.com › r/c_programming › "undefined reference to pow" error after including and the gcc option -lm
r/C_Programming on Reddit: "Undefined reference to pow" error after including <math.h> and the GCC option -lm
December 16, 2021 -

Hey y'all, as the title says, I'm a wee bit stuck trying to use the math.h library function "pow". Here's my code -

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

int main(int argc, char *argv[]) {

//OMITTED CODE

size_t i;
double j;
int k;
for(i = argLen - 1, k = 0; k < argLen; i--, k++) {
	j = pow(16, i);
	deciVals[k] = deciVals[k] * j;
}

//OMITTED CODE	

return 0;

}

Despite having math.h included, and using the -lm option for the GCC, I'm still getting this error -

>gcc -lm -o output hexConverter.c
/usr/bin/ld: /tmp/ccghjuxO.o: in function `main':
hexConverter.c:(.text+0x237): undefined reference to `pow'
collect2: error: ld returned 1 exit status

Any help would be appreciated, thanks guys.

🌐
Abundantcode
abundantcode.com › abundant code › undefined reference to `pow’ when compiling c program
Undefined reference to `pow' when compiling C program
January 5, 2025 - When trying to make a simple program in C and compiling it , there are times when you might get an error that you are missing the pow function when you have used them inspite of including the math.h header file.
🌐
GeeksforGeeks
geeksforgeeks.org › c language › how-to-solve-undefined-reference-to-pow-in-c-language
How to solve undefined reference to `pow' in C language? - GeeksforGeeks
July 23, 2025 - The math library (libm) contains ... others. If you do not explicitly link this library during the compilation, the linker will not be able to find the definition of pow, resulting in an "undefined reference" error...
🌐
CodeGenes
codegenes.net › blog › using-pow-function-throws-undefined-reference-error-in-c
Undefined Reference to pow() in C: Why Using Variables (Even Doubles) Causes Errors & How to Fix It — codegenes.net
June 1, 2006 - The "undefined reference to pow()" error is a linker error caused by missing the math library (libm). Variables (even doubles) trigger it because the compiler can’t optimize away the pow() call, requiring the real implementation from libm.
🌐
Code::Blocks
forums.codeblocks.org › index.php
Why windows don't show this error but i get this?
July 28, 2020 - Why windows don't show this error but i get this?
Top answer
1 of 4
2

The return value of pow() is double as you can see here:

http://www.tutorialspoint.com/c_standard_library/c_function_pow.htm

So you have to cast the return value to int like this:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
    printf("Hello world! %d\n",(int)pow(2,2));
    return 0;
}

Otherwise as you saw is the output 0!

Another example to show this you can try this:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
    printf("Hello world! %d\n",4.000000);
    return 0;
}

As you will see the output is also 0 because it's a double value!

2 of 4
1

printf("Hello world! %d\n",pow(2,2));
"The output of this code should be Hello world! 4 right?"

No. As this is undefined behavior, anything can happen. As @Mureinik posted what likely happens in this errant situation, you could have a possible understanding of why you saw 0. But in the end, C does not have to perform this way.

... If any argument is not the correct type for the corresponding conversion specification, the behavior is undefined.. C11 §7.21.6.1 9

Casting to (int) is a problem too.

1) int range is much smaller than double and for pow(2,100), that fails.

2) Casting to int truncates the fractional portion on the result of double and the preciseness of pow() is not defined. This will given surprising result when the pow() is something like 7.99999999999999 and 7 is printed rather than the hoped for 8.000000.

If code needs an integer power function, consider unsigned long long int pow or https://stackoverflow.com/a/213897/2410359 or search around.

🌐
Stack Overflow
stackoverflow.com › questions › 61981449 › c-language-math-library-error-when-compiling-pow
ide - c language math library error when compiling (pow) - Stack Overflow
June 28, 2020 - I can compile the program in my computer with visual 08 and codeblocks, but then I try to use my school IDE I get some errors. /tmp/ccD2ZV6Q.o: In function `main': knit2.c:(.text+0x8d): undefined reference to `pow' knit2.c:(.text+0xce): undefined reference to `pow' knit2.c:(.text+0x11b): undefined reference to `pow' collect2: error: ld returned 1 exit status
🌐
Its Linux FOSS
itslinuxfoss.com › home › how to fix the “undefined reference to ‘pow’” error
How to fix the “undefined reference to ‘pow’” error – Its Linux FOSS
July 22, 2022 - The error “undefined reference to 'pow'” can occur due to the absence of the header file or due to incorrect compilation.
🌐
GitHub
github.com › anotheremily › bin2txt › issues › 1
make fail, undefined reference to `pow', math lib problem · Issue #1 · anotheremily/bin2txt
December 15, 2017 - Make error message: make gcc -c driver.c gcc -c convert.c gcc -lm -o bin2txt driver.o convert.o convert.o: In function `bin2txt': convert.c:(.text+0x70): **undefined reference to `pow'** collect2: error: ld returned 1 exit status makefil...
Author   anarkia7115