为了账号安全,请及时绑定邮箱和手机立即绑定

未定义对`sin`的引用

未定义对`sin`的引用

繁星淼淼 2019-10-17 14:19:53
我有以下代码(简化为该问题的基本知识):#include<stdio.h>#include<math.h>double f1(double x){    double res = sin(x);    return 0;}/* The main function */int main(void){    return 0;}使用它进行编译时,gcc test.c出现以下错误,并且我无法找出原因:/tmp/ccOF5bis.o: In function `f1':test2.c:(.text+0x13): undefined reference to `sin'collect2: ld returned 1 exit status但是,我编写了sin从main功能内部调用的各种测试程序,这些程序运行良好。我肯定在这里做错了什么-那是什么?
查看完整描述

3 回答

?
慕尼黑5688855

TA贡献1848条经验 获得超2个赞

无论如何我还是有问题-lm


gcc -Wall -lm mtest.c -o mtest.o

mtest.c: In function 'f1':

mtest.c:6:12: warning: unused variable 'res' [-Wunused-variable]

/tmp/cc925Nmf.o: In function `f1':

mtest.c:(.text+0x19): undefined reference to `sin'

collect2: ld returned 1 exit status

我最近发现,如果您首先指定-lm,它将不起作用。顺序很重要:


gcc mtest.c -o mtest.o -lm

链接无问题


因此,您必须在之后指定库。


查看完整回答
反对 回复 2019-10-17
?
繁华开满天机

TA贡献1816条经验 获得超4个赞

请注意,Mac(运行Mac OS X或macOS)上的系统库包含数学函数。有一个库可以满足对内部-lm版本的引用,但是您无需使用它-lm来链接数学函数。导致数学库与其他数学库分离的主要问题是CPU并不总是内置浮点数。有浮点协处理器(80387等),因此有很多方法提供功能(使用软件浮点库或使用硬件,并提供不同的支持)。

查看完整回答
反对 回复 2019-10-17
  • 3 回答
  • 0 关注
  • 1551 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信