Linker gcc中连接到库的各种链接器是什么
我曾经尝试执行一个程序,但它显示了某些错误,如linux中的Linker gcc中连接到库的各种链接器是什么,linker,Linker,我曾经尝试执行一个程序,但它显示了某些错误,如linux中的“未定义对sqrt的引用”。然后我开始浏览很多博客和类似的东西,我知道在执行之前有两个过程,那就是编译和链接。如果有人能帮助我了解连接到相应库的各种链接器标志,那将非常有帮助 我知道在执行之前有两个过程,那就是编译和链接 编译和链接是构建时操作。它们的结果是可以立即执行的二进制文件。也就是说,安装在您机器上的二进制文件已经完成了这些步骤 加载程序二进制文件时,可能需要动态加载并链接其他库。这是由所谓的动态链接器执行的,它是操作系统的一部
“未定义对sqrt的引用”
。然后我开始浏览很多博客和类似的东西,我知道在执行之前有两个过程,那就是编译和链接。如果有人能帮助我了解连接到相应库的各种链接器标志,那将非常有帮助
我知道在执行之前有两个过程,那就是编译和链接
编译和链接是构建时操作。它们的结果是可以立即执行的二进制文件。也就是说,安装在您机器上的二进制文件已经完成了这些步骤
加载程序二进制文件时,可能需要动态加载并链接其他库。这是由所谓的动态链接器执行的,它是操作系统的一部分(尽管有些程序包含自己的动态链接器)
我曾经试图执行一个程序,但它显示了某些错误,比如“未定义对sqrt的引用”
这样的消息通常出现在程序编译和链接时,而不是执行时。在动态链接程序的情况下,与链接问题相关的最有可能的错误消息是关于无法定位和/或加载的所需库的消息
无论如何,
sqrt
函数是标准C数学库libm
的一部分。要将库与GCC链接,可以使用-l
标志,该标志采用库名称,省略了前面的lib…
部分。因此,在您的情况下,-lm
@sachinandakumar:嗯,对于您需要的每个库,您必须添加一个-l..
,即-l
标志可以多次给出。但是有很多很多的标志,不仅仅是-l
。编译器本身也是如此。我建议你读一下精美的手册:而且