使用std::thread线程相关函数,-static静态编译的程序运行时的一些常见错误
使用std::thread的应用程序,编译时如果是动态链接pthread线程库运行正常,-static静态链接时在某些平台下可能会遇到一些意外错误。如常见编译命令:g++ -std=C++11 test.c -o test -pthread
1、Segmentation fault(段错误)
2、terminate called after throwing an instance of 'std::system_error'......
第一点,检查编译选项是否链接线程库,检查链接选项是 “-pthread” 还是 “-lpthread”?
第二点,在编译选项上添加如下选项:
-Wl,--whole-archive -lpthread -Wl,--no-whole-archive
作用:强制链接引用的静态库中所有符号!!编译不报错的原因,是默认编译选项只链接到静态库中第一次出现的该引用对象,而该对象可能是“weak symbol”,因此导致问题发生。采用 whole-archive 可以把每一个引用对象包含进来,不会使用前面提到的不完整实现“weak symbol”。
完整编译选项示例:
g++ -std=C++11 -Wl,--whole-archive -pthread -Wl,--no-whole-archive test.c -o test
使用std::thread线程相关函数,-static静态编译的程序运行时的一些常见错误相关推荐
- QT编译的程序运行时缺少DLL如何处理
编译完QT的程序后,如果在其他地方运行缺少DLL,可以这样做: 在安装有QT5的计算机上,进入QT5的命令行,进入EXE或DLL所在的目录 运行windeployqt filename(这个filen ...
- Qt使用 std::thread 线程插入数据到 QTableWidget
Qt使用 std::thread 线程插入数据到 QTableWidget中 一.实现效果 二.主要代码 1. ThreadTable.h 头文件 2. ThreadTable.cpp 源文件 3. ...
- java内存区域及静态常量池、运行时常量池介绍
java内存区域介绍 我们先来介绍下虚拟机运行时数据区的结构: 我们项目中的每一个线程在运行时,都会有拥有自己独立的栈数据和程序计数器.程序计数器可以看作字节码命令的指示器,记录了下个需要执行的字节码 ...
- Qt编译通过,运行时出现the process was ended forcefully问题的解决方案
** Qt编译通过,运行时出现the process was ended forcefully问题的解决方案 ** Debug和Release模式下编译均能通过,调用外部函数也不会提示错误,但是运行就 ...
- [C++11 std::thread] 使用C++11 编写 Linux 多线程程序
From: http://www.ibm.com/developerworks/cn/linux/1412_zhupx_thread/index.html 本文讲述了如何使用 C++11 编写 Lin ...
- minigui:静态编译连接mgncs库时遇到的xml2的问题
最近做一个基于minigui/mgncs的项目,在开发阶段因为是在ubuntu下基于minigui的模拟器开发,所以编译时都是标准的动态库连接.没啥问题,很顺序. 现在项目功能开发告一段落,要向嵌入式 ...
- linux gcc 静态编译,GCC 程序编译的静态链接和动态链接
(给Linux爱好者加星标,提升Linux技能)转自:Mr_Bluyee 在链接阶段中,所有对应于源文件的 .o 文件.'-l' 选项指定的库文件.无法识别的文件名(包括指定的.o目标文件和.a库文件 ...
- jvm中方法区和常量池详解_Java常量池(静态常量池与运行时常量池)
1.什么是常量 用final修饰的成员变量表示常量,值一旦给定就无法改变! final修饰的变量有三种:静态变量.实例变量和局部变量,分别表示三种类型的常量. Java中的常量池,实际上分为两种形态: ...
- java多态编译,java多态 运行时多态和编译时多态
java多态 运行时多态和编译时多态 我们知道java的多态是一个重要的特性,其中体现java的多态有两种形式.运行时的多态和编译时的多态. 编译时的多态会发生在方法重载的时候,方法的重载指方法名相同 ...
最新文章
- PHP也玩并发,巧用curl 并发减少后端访问时间
- 幂等性 第三方交易编号_java幂等性的解决方案
- Openfire 源码部署
- 白话Elasticsearch73_ES生产集群中的索引管理01
- 长安大学第三届ACM-ICPC程序设计竞赛 E题
- 停止从域服务器同步文件,域控制器不同步处理办法
- 《娱乐至死》读书笔记(part4)--只有给观众他们想要的东西,你才可以得到市场占有率
- MAC电脑8款常用设计工具推荐
- mysql的复制订阅_如何删除发布与复制订阅数据库 'distribuion' 的方法
- 639. 解码方法 II
- centos桌面系统怎么退回终端系统_【社群话题分享】Linux 各大发行版你怎么选?...
- mysqli取代mysql,什么时候应该使用MySQLi代替MySQL?
- [AIR] 获取U盘,打开U盘
- 100天搞定机器学习|Day4-6 逻辑回归
- 2019年全国大学生电子设计竞赛试题 简易电路特性测试仪(D) 题 设计报告
- WINDOWS优化大师揭密
- ubuntu 火狐浏览器找不到服务器
- 基于群智能算法的函数最值优化问题
- Acwing 1191. 家谱树
- 怎么在unity中测试游戏_Unity中的性能基准测试:如何开始