我是C / C ++的新手,我有这个简单的问题。当我输入编译命令时,我不知道何时必须链接库。如果我是对的,我会添加参数-l,后跟我想要包含的库的名称。但是,如果我正在使用C的数学库,我是否添加了像-lmath这样的东西来编译我的程序?或者只有当我在某处读取C外部库时才需要它?什么是C外部库?谁能解释一下这个?谢谢。
答案 0 :(得分:4)
大多数编译器在链接时默认包含语言的标准库。 gcc将包含C标准库(libc),g ++将添加c ++标准库(libc ++)。在某些系统上,您可能会发现自己为数学添加-lm
,或者为实时扩展添加-lrt
,但这些库通常会添加核心语言之外的功能(尽管有时非常常用的功能)。
答案 1 :(得分:1)
Math是标准库的一部分,因此您无需链接它。其他所有内容都应该链接。(编辑:并非总是如此 - 请查看下面的评论)
例如,如果在代码printf,strcmp和pthread_create中使用,则不必为printf和strcmp链接任何内容。只需包含正确的标题即可。然而,pthread_create不是标准库的一部分,因此您必须链接到它 - -lpthread。