我知道,这些是一些常见的/基本的库,但它们究竟是什么意思?
例如,我知道,-lm
是一些数学库,但这是标准的数学库还是什么?
-lz
进行压缩?什么压缩?
我不知道这是什么 - -lrt
。
有人可以指定这些内容:
<cmath>
或<math.h>
时使用的相同? 答案 0 :(得分:20)
-lz
- 是zlib,http://zlib.net/ -lm
- 是您计算出的数学库(实现定义为AFAIK)-lrt
- 提供POSIX实时扩展程序:http://www.s-gms.ms.edus.si/cgi-bin/man-cgi?librt+3LIB 答案 1 :(得分:3)
-lz链接到zlib,-lm到math和-lrt到realtime extensions库。
答案 2 :(得分:2)
开关-lX通常意味着加载库libX.so.
libm是标准的数学库;它包含sin(),cos(),atanh(),所有这些好东西。
libz是Zlib,一个可以执行gzip,deflate和其他一些格式的压缩库。
有一些不同的librt:一个是POSIX实时扩展;另一个是通用编程辅助工具库。
答案 3 :(得分:1)
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 ++)。
答案 4 :(得分:0)
以上答案都是正确的。我要添加的一件事,就是我自己的C新手,是-l
参数告诉编译器将代码链接到某个库。
对我和其他人来说,混淆是在调用-l
加上lib的名称时没有空间。所以-lz
,您正在链接到&#34; z&#34;
请注意,这些库已安装在您的系统中。他们使用您正在使用的发行版,或使用包管理器安装或从源代码编译(make
,make install
...)。
由于这些是非常基本的(和旧的)库APIS,因此它们的名称非常短。当您在系统中进行并安装特定的库时,您会看到更多详细的名称标记-l
。