[英]GCC -lm -lz -lrt options - what are they about?
我知道,这些是一些常见的/基本的库,但它们究竟是什么意思?
例如,我知道, -lm
是一些数学库,但这是标准的数学库还是什么?
-lz
用于压缩? 什么压缩?
我不知道这是什么 - -lrt
。
有人可以指定这些东西:
<cmath>
或<math.h>
时使用的相同? -lz
-是zlib的, http://zlib.net/ -lm
- 是您计算出的数学库(实现定义为AFAIK) -lrt
- 提供POSIX实时扩展: http : -lrt
交换机-lX通常意味着加载库libX.so.
libm是标准的数学库; 它包含sin(),cos(),atanh(),所有这些好东西。
libz是Zlib,一个可以执行gzip,deflate和其他一些格式的压缩库。
有几个不同的librt:一个是POSIX实时扩展; 另一个是通用编程辅助工具库。
上面的答案都是正确的。 我要添加的一件事,就是我自己的C新手,是-l
参数告诉编译器将你的代码链接到某个库。
对我和其他人来说,混淆是在调用-l
加上lib的名称时没有空间。 所以-lz
,你链接到“z”
请注意,这些库安装在您的系统中。 要么他们带有您正在使用的发行版,要么使用包管理器安装或从源代码编译( make
, make install
...)。 由于这些是非常基本的(和旧的)库APIS,因此它们的名称非常短。 当您在系统中进行并安装特定的库时,您会看到更多详细的名称标记-l
。
libm http://refspecs.freestandards.org/LSB_3.0.0/LSB-Core-generic/LSB-Core-generic/libm.html
libz http://refspecs.freestandards.org/LSB_3.0.0/LSB-Core-generic/LSB-Core-generic/libzman.html
librt http://www.rdg.ac.uk:8081/cgi-bin/cgiwrap/wsi14/poplog/man/3LIB/librt
所有这些都是标准的C afaik,可能包含在libstdc ++中(你的问题标记为C ++)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.