2010-11-30 110 views
3

我无法记住将包含文件链接到GCC时键入的内容,实际上我记得的唯一一个是-lm(对于math.h)。我现在特别关心的是sys/time.h在GCC中链接包含文件

This page清除了一些东西,但我仍然喜欢列表。

有谁知道一个很好的链接选项列表?

编辑:

也许我的问题不明确。我想知道我需要在命令行输入什么(如数学的-lm或pthread的-lpthread),以便在制作C程序时可能需要链接的各种库。

回答

0

我不知道我理解你的问题,但-lm不是ld 选项,-l是一个选项,-lx链接libx.a(或.so,它取决于)。你可能想看看ld手册中的完整选项列表。
我觉得比其他数学的所有其他标准库都包含在libc.so(.a)中(-lc)

+0

`libcrypt`,`libdl`,`libpthread`,`libresolv`和`librt`都包含更多不在`libc`和`libm`中的标准C/POSIX函数。许多人会认为`libz`也是一个标准的系统库。 – ephemient 2010-11-30 22:52:55

1

<sys/time.h>提供的功能在libc.so(C库)来实现。您不需要链接任何其他内容,因为gcc应该自动链接到libc.so。没有'包含文件的链接',而是链接到包含由代码定义的符号的库。

-l标志是GCC's linker options之一,用于指定要链接的附加库。

编辑,因为我的gcc在编译时执行对我的源代码优化

此外,在该链接的信息是有点过时 - 你不应该需要一个明确的联系 libm(这是什么 -l m-lm)在现代海合会。

+0

哇,这是什么时候发生的? http://stackoverflow.com/questions/1033898/why-do-you-have-to-link-the-math-library-in-c/1033940#1033940我很确定这是一年前准确的... – ephemient 2010-11-30 21:49:58