0

我是 C/C++ 新手,我有这个简单的问题。当我输入编译命令时,我不知道何时必须链接库。如果我是对的,我会添加参数 -l 后跟我要包含的库的名称。但是,如果我正在使用 C 的数学库,我是否添加了类似 -lmath 的东西来编译我的程序?或者只有当我在某处阅读时使用 C 外部库时才需要?什么是 C 外部库?谁能给我解释一下?谢谢你。

4

2 回答 2

4

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

于 2012-05-08T12:03:06.920 回答
1

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

例如,如果您在代码中使用 printf、strcmp 和 pthread_create,则不必为 printf 和 strcmp 链接任何内容。只需包含正确的标题就可以了。但是 pthread_create 不是标准库的一部分,因此您必须链接到它 - -lpthread。

于 2012-05-08T12:04:50.240 回答