×

Search anything:

[FIXED] Undefined reference to 'pow', 'floorf' and 'floor'

Binary Tree book by OpenGenus

Open-Source Internship opportunity by OpenGenus for programmers. Apply now.

In this article, we have presented 3 ways to fix the error "Undefined reference to 'pow', 'floorf' and 'floor'" while compiling C programs.

Table of contents:

  1. Error
  2. Fix 1: Include math.h
  3. Fix 2: Add flag -lm
  4. Fix 3: Use LD_PRELOAD

Error

On compiling a C program, you may face any error as follows:

Command:

gcc code.c

Error:

opengenus.c:(.text+0x2a): undefined reference to 'pow'
opengenus.c:(.text+0x4a): undefined reference to 'floor'
opengenus.c:(.text+0x6a): undefined reference to 'floorf'

This can happen with other math functions as well like ceil.

opengenus.c:(.text+0x4a): undefined reference to 'ceil'

Fix 1: Include math.h

Make sure you have included math.h header file. Include it at the top of your C program as follows:

#include <math.h>

Fix 2: Add flag -lm

If you have included the header file, the issue is with your compilation command. You need to add the link flag -lm. It will link the math library.

gcc code.c

to

gcc code.c -lm

Important: Add the lm flag at the end.

Fix 3: Use LD_PRELOAD

The math library is named as libm.so and is usually, located in /lib or /usr/lib in UNIX system like Ubuntu. Go to these locations and try to locate libm.so.

Once you find it, add it to the environment variable LD_PRELOAD.

export LD_PRELOAD="/usr/lib/libm.so"

With these two fixes, the error should be fixed. Best of luck debugging.

OpenGenus Tech Review Team

OpenGenus Tech Review Team

The official account of OpenGenus's Technical Review Team. This team review all technical articles and incorporates peer feedback. The team consist of experts in the leading domains of Computing.

Read More

Improved & Reviewed by:


Devansh Biswal
[FIXED] Undefined reference to 'pow', 'floorf' and 'floor'
Share this