lm标志是需要链接数学库吗?

这个问题在这里已经有了答案:

  • 为什么你必须链接C中的数学库? 9个答案

  • 因为没有人愿意解决的荒谬历史实践。 将C和POSIX所需的所有功能合并到一个库文件中,不仅可以避免这个问题得到反复询问,而且在动态链接时也可以节省大量时间和内存,因为链接的每个.so文件都需要找到并找到它的文件系统操作,以及其静态变量,重定位等的几个页面。

    一个所有函数都在一个库中并且-lm-lpthread-lrt等选项全部为空操作的实现(或者链接到空的.a文件)完全符合POSIX并且当然更可取。

    注意:我在谈论POSIX,因为C本身没有指定如何调用编译器。 因此,您可以将gcc -std=c99 -lm作为特定于实现的方式来处理编译器的符合性行为。


    由于time()和其他一些功能都builtin在C库(定义libc )本身和GCC总是链接到的libc,除非你使用-ffreestanding编译选项。 然而,数学函数存在于libm ,而不是由gcc隐式链接。

    链接地址: http://www.djcxy.com/p/85831.html

    上一篇: lm flag is needed to link the math library?

    下一篇: combine two GCC compiled .o object files into a third .o file