2017-02-28 105 views
-1

如前所述超过herehere运行时间与链接与GCC

所以如果你的程序是使用数学函数和包括math.h中,然后 你需要通过将“显式链接数学库 - LM'

但我只是设法得到链接,而不使用-lm标志与我的良性C代码上的gcc。

它工作得很好。

任何线索。

的gcc -version

gcc -v 
Configured with: --prefix=/Library/Developer/CommandLineTools/usr --with-gxx-include-dir=/usr/include/c++/4.2.1 
Apple LLVM version 8.0.0 (clang-800.0.42.1) 
Target: x86_64-apple-darwin16.4.0 
Thread model: posix 
InstalledDir: /Library/Developer/CommandLineTools/usr/bin 
+1

让我直截了当,有些东西*工作*,你有投诉? :-) – paxdiablo

+0

@paxdiablo :)我只是想知道它会在所有机器上工作还是它在MacOS上的特定版本的gcc上做这个 – Noobie

+0

FWIW,我认为这是gcc方面的过时行为,因为数学代码是在一个独立于其他libc的库中。但是,从内存来看,gcc/ld有一些非常强大的配置文件来控制这种事情,所以苹果(或者BSD)可能会对它进行修复。我不会依赖它在任何地方工作。 – paxdiablo

回答

2

在许多系统中的什么libm中传统的某些部分都包含在标准C库因各种原因。其他部分可以直接在math.h头文件中实现,但其他部分可能只是由编译器内联实现。

无论你有什么代码,你都逃避不与libm链接。即使它不完全正确,你也会经常在尽力而为的情况下结束。一个好习惯是忽视这种运气,并且仍然按照标准/文件的说法做,因为它减少了未来的问题数量。