GCC – 常用手动链接选项-lz、-lrt、-lm、-lc、-lpthread、-lcrypt、dl链接都是什么库?
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、-lcrypt、dl链接都是什么库?
- -lz:手动链接压缩库libz
- -lrt:手动链接实时库librt。这个库包括异步I / O,消息队列,进程调度,实时信号扩展,信号量,共享内存对象,同步I / O和定时器选项下定义的接口。
- -lm:手动链接数学库libm,libm库是Linux系统中的一种数学库文件,它提供了各种数学函数,例如三角函数、指数函数、对数函数以及一些高级数学函数等等。
- -lc:手动链接标准c库libc,libc库是Linux系统中最基础的库文件,它包含了各种C语言库函数以及一些系统级的API。这个库文件提供了Linux系统中最常用的函数,例如字符串操作、IO操作、数学函数等等,也是其他库文件的基础。
- -lpthread:手动链接多线程库pthread,用到多线程需要链接,包括在linux上使用
std::thread
也需要链接。libpthread库是Linux系统中的线程库文件,它提供了各种线程相关的API函数。使用这个库可以在Linux系统中创建多线程程序,实现程序并发执行,提高程序运行效率。 - -lcrypt:手动链接加密库libcrypt。libcrypt库是Linux系统中的一个加密库文件,可以提供各种加密算法,例如DES、SHA等等。使用这个库可以实现对数据的加密和解密,保证数据的安全性。
- 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
当前分类随机文章推荐
- C++11 - 基于无锁队列的单生产者单消费者模型 阅读6711次,点赞1次
- C++ - 使用cuda api获取本机显卡数量和显卡信息 阅读458次,点赞0次
- C++ - 使用Websocket++编写客户端连接WebSocket服务器并进行通信 阅读5124次,点赞3次
- GCC/G++中编译优化选项-O -O0 -O1 -O2 -O3 -Os -Ofast -Og -Oz各自的区别和作用 阅读5741次,点赞4次
- C++ - 使用Spout2将视频流发送到OBS 阅读227次,点赞0次
- C++11 - 使用std::thread在类内部以成员函数作为多线程函数执行异步操作 阅读3180次,点赞0次
- C++ - 一文搞懂std::future、std::promise、std::packaged_task、std::async的使用和相互区别 阅读648次,点赞0次
- C++11 - 构建一个符合实际应用要求的线程池 阅读1431次,点赞0次
- C++ - 阿拉伯数字字符串转换为中文读法的中文字符串,支持小数点 阅读1613次,点赞0次
- C++ - std::string字符串格式化方法总结 阅读1971次,点赞0次
全站随机文章推荐
- 深度学习 - 通俗理解Beam Search Algorithm算法 阅读1317次,点赞0次
- 资源分享 - Efficient Illumination Algorithms for Global Illumination In Interactive and Real-Time Rendering英文PDF下载 阅读2893次,点赞0次
- 深度学习 - 动作识别Action Recognition最重要的问题 阅读682次,点赞1次
- TensorRT - 基于TensorRT的多线程并发推理方案 阅读804次,点赞2次
- 资源分享 - GPU Pro 360 - Guide to GPGPU 英文高清PDF下载 阅读2553次,点赞0次
- CMake - 设置Debug或者Release编译模式 阅读4000次,点赞0次
- 资源分享 - Graphics Gems I 英文高清PDF下载 阅读2578次,点赞0次
- Python - 使用Python+websockets时报错:AttributeError: module 'websockets' has no attribute 'serve' 阅读1872次,点赞0次
- 常见的三维点云数据下载链接,自己整理+网上收集 阅读111079次,点赞50次
- 资源分享 - Handbook of Discrete and Computational Geometry, Second Edition 英文高清PDF下载 阅读2361次,点赞0次
评论
169