Linux静态编译之lpthread库踩坑记录: -static静态编译后,执行程序出现段错误

博客讲述了在Linux环境下,静态编译程序时遇到的lpthread库导致的段错误问题。动态编译正常,但静态编译后程序崩溃。作者通过GDB调试发现thread库存在问题,并提供了解决方案,即在编译时添加特定选项-Wl,--whole-archive -lpthread -Wl,--no-whole-archive,确保所有符号被链接。文章提醒静态链接可能不是最佳选择。" 8484132,1397844,BIRT报表脚本与事件机制详解,"['Birt', '报表开发', '脚本语言', '数据处理', '事件处理']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

动态编译正常运行,静态编译后出现段错误
1、动态编译正常,如下图:

g++ SDAmqpev.cpp -lamqpcpp -std=c++11 -lev -lpthread -ldl

在这里插入图片描述
2、静态编译出现断段错误,如图:

g++ SDAmqpev.cpp -lamqpcpp -std=c++11 -lev -lpthread -ldl -static

在这里插入图片描述
3、GDB排查问题
在这里插入图片描述
看上图可知,thread库有问题了!
你可以不使用std:thread这个,改为其他,或者使用下面这个方式编译。

4、解决办法:编译条件加入这个**-Wl,–whole-archive -lpthread -Wl,–no

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值