当前位置:  开发笔记 > 运维 > 正文

在Math.h中调用函数时为什么会出现链接错误?

如何解决《在Math.h中调用函数时为什么会出现链接错误?》经验,为你挑选了1个好方法。

当试图调用函数时math.h,我收到如下链接错误

undefined reference to sqrt

但我正在做一个#include
我正在使用gcc并编译如下:

gcc -Wall -D_GNU_SOURCE blah.c -o blah

为什么链接器找不到定义sqrt



1> Dima..:

调用gcc时将-lm添加到命令:
gcc -Wall -D_GNU_SOURCE blah.c -o blah -lm

这将告诉链接器链接数学库.包括math.h将告诉编译器存在类似sqrt()的数学函数,但它们是在一个单独的库中定义的,链接器需要将其与可执行文件打包在一起.

正如FreeMemory指出的那样,库名为libm.a.在类Unix系统上,命名库的规则是lib [blah] .a.然后,如果要将它们链接到可执行文件,请使用-l [blah].


实际上,如果你在现代Linux系统上这样做,你最终会链接到libm.so,它是libm.a的动态库.
推荐阅读
mobiledu2402852357
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有