我刚刚发现-lm
gcc需要该标志来编译一个引用数学库函数的程序。我想知道为什么在编译包含其他库(如时间库)的程序时不需要显式链接标志。如果我编写一个time()
调用该函数的程序,即使没有链接选项,也可以毫无问题地进行编译。但是如果没有-lm
国旗,涉及数学库的计划就无法运作。
发布于 2018-03-09 19:06:05
所有功能都在一个库的实现和-lm
,-lpthread
,-lrt
,等选项都是无操作(或链接到空.a
文件)是完全符合的POSIX,当然最好。
发布于 2018-03-09 20:48:22
由于C库()本身定义了time()
一些其他函数,并且GCC 始终链接到libc,除非使用编译选项。然而,数学函数的生活并不是通过gcc隐式链接的。
https://stackoverflow.com/questions/-100004230
复制相似问题