什么都是连接到gcc中的库的各种链接器

时间:2013-07-20 14:01:05

标签: linker

我曾尝试执行一个程序,它在linux中显示了某些错误,例如"undefined reference to sqrt"。然后我开始浏览许多博客和类似的东西,我理解在执行之前有两个进程,即编译和链接。如果有人可以帮助我关于连接到相应库的各种链接器标志,将会非常有帮助。

1 个答案:

答案 0 :(得分:0)

  

我知道执行前有两个进程,即编译和链接。

编译和链接是构建时动作。他们的结果是一个可以立即执行的二进制文件。即您机器上安装的二进制文件已经完成了这些步骤。

加载程序二进制文件时,可能需要动态加载和链接其他库。这是由所谓的动态链接器执行的,它是操作系统的一部分(虽然有些程序包含它们自己的动态链接器)。

  

我曾尝试执行某个程序,但它显示了某些错误,例如“未定义的对sqrt的引用”

像这样的消息通常出现在程序编译和链接上,而不是执行上。在动态链接程序的情况下,与链接问题相关的最可能的错误消息将是关于无法定位和/或加载的所需库的消息。

无论如何,sqrt函数是标准C数学库libm的一部分。要使用GCC链接库,可以使用-l标记,该标记采用库名称,省略前导lib…部分。所以在你的情况下-lm