gpt4 book ai didi

c - 为什么必须链接 C 中的数学库?

转载 作者:太空狗 更新时间:2023-10-29 16:13:44 24 4
gpt4 key购买 nike

如果我包括 <stdlib.h><stdio.h>在 C 程序中,编译时我不必链接这些,但我必须链接到 <math.h> , 使用 -lm使用 GCC,例如:

gcc test.c -o test -lm

这是什么原因?为什么我必须显式链接数学库,而不是其他库?

最佳答案

stdlib.hstdio.h 中的函数在libc.so(或libc.a 用于静态链接),默认情况下链接到您的可执行文件(就像指定了 -lc 一样)。可以指示 GCC 避免与 -nostdlib 的自动链接。或 -nodefaultlibs选项。

math.h 中的数学函数在 libm.so(或用于静态链接的 libm.a)中有实现,并且 libm 默认不链接。 libm/libc 的 split 是有历史原因的,但都不是很有说服力。

有趣的是,C++ 运行时 libstdc++ 需要 libm,所以如果你用 GCC (g++) 编译 C++ 程序,你会自动得到libm 链接进来。

关于c - 为什么必须链接 C 中的数学库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1033898/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com