gcc链接错误,未定义引用函数
Tofloor
poster avatar
xliang9550
deepin
2015-05-25 05:10
Author
使用math.h中的三角函数,编译通过,链接出错。
/tmp/ccU9H45N.o:在函数‘main’中:
test.c.text+0x48):对‘sin’未定义的引用
collect2: error: ld returned 1 exit status
源程序:
#include
#include
int main(void)
{
        double pi=atan(1.0)*4;
        double theta;
        int i;
        for(i=0;i<100;i+=10)
        {
                theta=i*pi/180;
                printf("%f",sin(theta));
        }
        printf("\n");
        return 0;
}
只有sin提示未定义引用,atan没有提示出错。
Reply Favorite View the author
All Replies
ArthurDeepin
deepin
2015-05-25 05:20
#1
百度了一下……说是个bug…………需要手动 -lm 选项链接数学函数库。
Reply View the author
Feng Yu
deepin
2015-05-25 06:04
#2
本帖最后由 abcfy2 于 2015-5-24 22:10 编辑

google了一下,http://stackoverflow.com/questio ... ference-to-sin-in-c
老外在这个帖子说了具体的原因了,是link的时候没有引用math.h造成了错误,所以解决方案就是在最后加上-lm参数
这个参数的意义可以参考: http://bbs.csdn.net/topics/20023165
http://bbs.csdn.net/topics/280084530
http://blog.sina.com.cn/s/blog_53ed87c1010002p7.html
Reply View the author
xliang9550
deepin
2015-05-26 02:29
#3
已经链接好了:
gcc --std=c99 -o program.exe program.c -lm
(我在Linux下仍然喜欢给可执行文件添加.exe后缀)
Reply View the author
New Thread

Popular Events

More
国际排名
WHLUG