C语言使用trunc函数报undefined reference to trunc错误如何解决
报错原因
这个错误是链接器错误,不是语法问题:代码已经成功编译生成目标文件,但链接器找不到trunc函数的实现。trunc属于C标准库的数学库(libm)函数,Linux、WSL、MinGW等环境下的GCC/Clang编译器,默认只会链接基础C库(libc),不会自动链接独立的数学库,因此触发未定义引用报错。
解决步骤
- 首先在代码头部引入数学库头文件,避免隐式声明警告:
#include <math.h> - 编译命令末尾添加
-lm参数,手动指定链接数学库:
原编译命令示例:gcc temp1.c -o temp1
修改后正确编译命令:gcc temp1.c -o temp1 -lm
补充说明
- 所有数学库函数(包括
sqrt、floor、pow、三角函数等)在上述环境下编译时,都需要添加-lm参数。 - Windows平台的MSVC编译器会自动链接数学库,不会出现该类报错。
内容的提问来源于stack exchange,提问作者Abhishek Rathore
相关产品推荐
相关产品推荐

