• 问题反馈可发送邮件到stubbornhuang@qq.com

  • 欢迎大家交换友链,可在https://www.stubbornhuang.com/申请友情链接进行友链交换申请!

  • 计算机图形学与计算几何经典必备书单整理,下载链接可参考:https://www.stubbornhuang.com/1256/

  • 如果觉得本站的内容有帮助,可以考虑打赏博主哦!

  • 本站由于前段时间遭受到大量临时和国外邮箱注册,所以对可注册的邮箱类型进行了限制!

  • 工资「喂饱肚子」,副业「养活灵魂」!

  • 感谢大家访问本站,希望本站的内容可以帮助到大家!

  • 在本站开通年度VIP,无限制下载本站资源和阅读本站文章

  • 本站会放置Google广告用于维持域名以及网站服务器费用。

GCC – 常用手动链接选项-lz、-lrt、-lm、-lc、-lpthread、-lcrypt、dl链接都是什么库?

C++ 发布于2023-09-06 阅读 3,957次 0次评论 0次点赞 本文共1184个字,阅读需要3分钟。

1 GCC的-l选项,手动添加链接库

GCC在编译代码时,可以使用-l手动添加链接库,比如说有以下代码main.c

#include <stdio.h>
#include <math.h>
#define PI 3.14159265
int main ()
{
    double param, result;
    param = 60.0;
    result = cos ( param * PI / 180.0 );
    printf ("The cosine of %f degrees is %f.\n", param, result );
    return 0;
}

直接使用gcc编译会出现cos未定义的链接错误,无法找到cos这个函数

gcc main.c

#出现以下错误
/tmp/ccYfkZJk.o: In function `main':
main.c:(.text+0x34): undefined reference to `cos'
collect2: ld returned 1 exit status

标准头库文件math.h对应的数学库默认也不会被链接,如果没有手动将它添加进来,就会发生函数未定义错误。

对于上述问题,必须手动链接数学库m,修改编译命令如下

gcc main.c -o main.out -lm

数学库的文件名是libm.a,前缀lib和后缀.a是标准的,m是数学库的名称,GCC 会在-l选项后紧跟着的基本名称的基础上自动添加这些前缀、后缀,本例中,基本名称为 m。

2 GCC中常用手动链接选项-lz-lrt、-lm、-lc-lpthread-lcryptdl链接都是什么库?

  1. -lz:手动链接压缩库libz
  2. -lrt:手动链接实时库librt。这个库包括异步I / O,消息队列,进程调度,实时信号扩展,信号量,共享内存对象,同步I / O和定时器选项下定义的接口。
  3. -lm:手动链接数学库libm,libm库是Linux系统中的一种数学库文件,它提供了各种数学函数,例如三角函数、指数函数、对数函数以及一些高级数学函数等等。
  4. -lc:手动链接标准c库libc,libc库是Linux系统中最基础的库文件,它包含了各种C语言库函数以及一些系统级的API。这个库文件提供了Linux系统中最常用的函数,例如字符串操作、IO操作、数学函数等等,也是其他库文件的基础。
  5. -lpthread:手动链接多线程库pthread,用到多线程需要链接,包括在linux上使用std::thread也需要链接。libpthread库是Linux系统中的线程库文件,它提供了各种线程相关的API函数。使用这个库可以在Linux系统中创建多线程程序,实现程序并发执行,提高程序运行效率。
  6. -lcrypt:手动链接加密库libcrypt。libcrypt库是Linux系统中的一个加密库文件,可以提供各种加密算法,例如DES、SHA等等。使用这个库可以实现对数据的加密和解密,保证数据的安全性。
  7. dl:显式加载动态库的

欢迎扫码关注我的微信公众号,及时获取文章更新

微信公众号二维码

本文作者:StubbornHuang

版权声明:本文为站长原创文章,如果转载请注明原文链接!

原文标题:GCC – 常用手动链接选项-lz、-lrt、-lm、-lc、-lpthread、-lcrypt、dl链接都是什么库?

原文链接:https://www.stubbornhuang.com/2788/

发布于:2023年09月06日 16:15:30

修改于:2023年09月06日 16:15:30

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

文章末尾
上一篇
GCC - -fpic、-fPIC、-fpie、-fPIE编译选项的作用和区别
C++
下一篇
CMake - 链接多线程pthread库的几种方式
C++
当前分类随机文章推荐

发表评论

您必须 [ 登录 ] 才能发表留言!

关注我们的公众号

微信公众号