我是C/C++的新手,我有这个简单的问题。当我输入编译命令时,我不知道何时需要链接库。如果我是对的,我会添加参数-l,后跟我想包含的库的名称。但是,如果我用C的数学库进行工作,我是否添加了类似-lmath的内容来编译我的程序?或者当我在某处阅读时,仅仅需要使用C外部库时?什么是C外部库?任何人都可以解释我吗?谢谢。我什么时候必须链接C语言库?
0
A
回答
4
大多数编译器在链接时默认会包含语言的标准库。 gcc将包含C标准库(libc),并且g ++将添加C++标准库(libC++)。在某些系统上,您可能会发现自己的数学增加了-lm
,实时扩展增加了-lrt
,但这些库通常会在核心语言之外添加功能(尽管有时是非常常用的功能)。
1
数学是标准库的一部分,因此您不必链接它。其他一切应该联系起来。
(编辑:并非总是如此 - 请查看下面的注释)
例如,如果您在代码printf,strcmp和pthread_create中使用,则不必为printf和strcmp链接任何内容。只要包括正确的标题,你就没问题。然而,pthread_create不是标准库的一部分,所以你必须链接到它 - -lpthread。
相关问题
- 1. 什么时候必须围绕try/catch?
- 2. 什么时候我必须处理我的上下文
- 3. 什么样的代码我必须在OnCreate()和什么时候我必须把它放在OnCreateView()?
- 4. 交叉编译时,我必须用C++库做些什么?
- 5. 我什么时候必须使用scikit的fit方法学习?
- 6. 我什么时候必须明确地打开一个SqlConnection?
- 7. 什么时候我必须使用boost :: asio:strand
- 8. 什么时候必须要在C++类中定义析构函数,为什么?
- 9. 在c中实现字符串队列我什么时候必须使用malloc
- 10. 什么时候我们必须在C#中使用extern别名关键字?
- 11. 什么时候我们必须在C#中使用checked运算符?
- 12. 为什么我必须在这里放置我的动态链接库?
- 13. 为什么你必须链接库和设置包含目录
- 14. 什么是PostgreSQL函数,什么时候我必须使用它们?
- 15. 为什么我必须链接引用程序集?
- 16. 为什么我必须明确链接libm?
- 17. 使用C语言中的setjmp和longjmp链接到C++库时
- 18. 我必须为NULL指针的malloc?我什么时候需要为malloc指针?
- 19. 这是什么意思? “错误:`rhs`必须是语言对象”
- 20. 语言必须支持递归的属性是什么?
- 21. 语言必须支持递归的属性是什么?
- 22. 为什么有时我必须parseJSON,有时候不需要做Ajax请求?
- 23. 什么时候必须在Tensorflow中初始化变量?
- 24. 什么时候你必须在iPhone SDK中使用@property和@synthesize?
- 25. 为什么在C++语言中使用命名空间标准是必须的?
- 26. c语言中链接和加载的区别是什么
- 27. 何时以及为什么我们必须实现Comparable接口?
- 28. 链接语言
- 29. 什么时候和为什么必须更改产品guid进行升级?
- 30. 什么时候我必须在VB6中设置一个变量为“Nothing”?
有时你必须链接到数学库才能使用标准的数学函数。 –
好的,对。我认为他正在讨论math.h中的函数,据我所知,它是标准库的一部分。 –
在Solaris上(例如),math.h函数需要明确链接到libm。 – Joe