2012-05-08 41 views
0

我是C/C++的新手,我有这个简单的问题。当我输入编译命令时,我不知道何时需要链接库。如果我是对的,我会添加参数-l,后跟我想包含的库的名称。但是,如果我用C的数学库进行工作,我是否添加了类似-lmath的内容来编译我的程序?或者当我在某处阅读时,仅仅需要使用C外部库时?什么是C外部库?任何人都可以解释我吗?谢谢。我什么时候必须链接C语言库?

回答

4

大多数编译器在链接时默认会包含语言的标准库。 gcc将包含C标准库(libc),并且g ++将添加C++标准库(libC++)。在某些系统上,您可能会发现自己的数学增加了-lm,实时扩展增加了-lrt,但这些库通常会在核心语言之外添加功能(尽管有时是非常常用的功能)。

1

数学是标准库的一部分,因此您不必链接它。其他一切应该联系起来。 (编辑:并非总是如此 - 请查看下面的注释)

例如,如果您在代码printf,strcmp和pthread_create中使用,则不必为printf和strcmp链接任何内容。只要包括正确的标题,你就没问题。然而,pthread_create不是标准库的一部分,所以你必须链接到它 - -lpthread。

+4

有时你必须链接到数学库才能使用标准的数学函数。 –

+0

好的,对。我认为他正在讨论math.h中的函数,据我所知,它是标准库的一部分。 –

+0

在Solaris上(例如),math.h函数需要明确链接到libm。 – Joe

相关问题