【发布时间】:2020-04-17 14:41:06
【问题描述】:
我注意到当我在函数内部使用sin 时,编译器无法识别它,下面是一个示例:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
float sinus(float a){
return sin(a);}
int main(int argc, char **argv)
{
double a = sinus(2);
printf("%f \n", sin(2));
printf("%f", a);
return 0;
}
如果我直接在 main 中使用它可以正常工作,但在用户定义的函数中它会给我这个错误undefined reference to sin。
我使用gcc -Wall -lm -lc -lgcc -o "%e" "%f"进行编译。
【问题讨论】:
-
您要为什么系统/环境构建?添加
-lc和-lgcc几乎可以肯定是没有必要的...%e和%f是什么? -
我在 ubuntu 中使用 geany,这是 gcc 版本
gcc version 7.4.0 (Ubuntu 7.4.0-1ubuntu1~18.04.1)%e用于不带 .c 的文件名,%f用于文件名.c -
那么@alk 的评论就是你要找的(他/她应该把它写成答案)。
-
感谢大家的cmets。把对图书馆的引用放在最后解决了它。祝大家节日快乐!
-
@AnasBELFADIL 见what to do when someone answers。不要发布“谢谢”,只需用复选标记接受正确答案(当 SO 允许您这样做时)。
标签: c linker-errors undefined-reference