我一直在包括<string.h>
到处都是,当我去包括的那一刻<math.h>
for pow()
我发现我需要修改我的 makefile 才能访问定义pow
.
我也不知道我可以在哪里查找更多库如果我需要包括它们。我随机读到-lm
标志(或至少是m
它)表示标准 C 数学库,但我不知道其他标准 C 库可能被称为什么。
我刚进去看user/local/lib
我所看到的是:
$ cd /usr/local/lib
$ ls -al
drwxr-xr-x 3 root root 4096 Apr 25 2012 .
drwxr-xr-x 10 root root 4096 Apr 25 2012 ..
drwxrwsr-x 4 root staff 4096 Oct 14 10:19 python2.7
string.h
是对标准库的某个模块的头引用,但是由于历史原因math.h
不是对标准库模块的标头引用。编译程序时,链接器中通常默认包含标准库。
在某个时间点,人们可能会替代libm.so
math.h
与其他针对内存、CPU 性能等进行了更好优化的实现相结合。实际上,没有一个单独的实现libm.so
“默认”实施。然而,大多数系统至少提供一个实现。该实现位于默认库位置,如下所示libm.so
并将与-lm
.
如果您有一个更快(甚至可能以不太准确为代价)的库并且您知道可以使用,您就可以覆盖系统提供的库math.h
libm.so
执行。
早期的 CRAY 系统(我没有开发过)确实优化了一些数学实现,以不进行正确的“完整”数学运算,因为要获得 100% 正确的答案,您需要使用以下命令“完成”组装操作由于计算中有效数字的数量,这些代码通常并不重要。 (根据我对华盛顿特区密码学博物馆展览的理解)
多种实现的问题是你现在有一个选择,并且标准C库其结构不为您提供实施选择。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)