使用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静态编译的程序运行时的一些常见错误相关推荐

  1. QT编译的程序运行时缺少DLL如何处理

    编译完QT的程序后,如果在其他地方运行缺少DLL,可以这样做: 在安装有QT5的计算机上,进入QT5的命令行,进入EXE或DLL所在的目录 运行windeployqt filename(这个filen ...

  2. Qt使用 std::thread 线程插入数据到 QTableWidget

    Qt使用 std::thread 线程插入数据到 QTableWidget中 一.实现效果 二.主要代码 1. ThreadTable.h 头文件 2. ThreadTable.cpp 源文件 3. ...

  3. java内存区域及静态常量池、运行时常量池介绍

    java内存区域介绍 我们先来介绍下虚拟机运行时数据区的结构: 我们项目中的每一个线程在运行时,都会有拥有自己独立的栈数据和程序计数器.程序计数器可以看作字节码命令的指示器,记录了下个需要执行的字节码 ...

  4. Qt编译通过,运行时出现the process was ended forcefully问题的解决方案

    ** Qt编译通过,运行时出现the process was ended forcefully问题的解决方案 ** Debug和Release模式下编译均能通过,调用外部函数也不会提示错误,但是运行就 ...

  5. [C++11 std::thread] 使用C++11 编写 Linux 多线程程序

    From: http://www.ibm.com/developerworks/cn/linux/1412_zhupx_thread/index.html 本文讲述了如何使用 C++11 编写 Lin ...

  6. minigui:静态编译连接mgncs库时遇到的xml2的问题

    最近做一个基于minigui/mgncs的项目,在开发阶段因为是在ubuntu下基于minigui的模拟器开发,所以编译时都是标准的动态库连接.没啥问题,很顺序. 现在项目功能开发告一段落,要向嵌入式 ...

  7. linux gcc 静态编译,GCC 程序编译的静态链接和动态链接

    (给Linux爱好者加星标,提升Linux技能)转自:Mr_Bluyee 在链接阶段中,所有对应于源文件的 .o 文件.'-l' 选项指定的库文件.无法识别的文件名(包括指定的.o目标文件和.a库文件 ...

  8. jvm中方法区和常量池详解_Java常量池(静态常量池与运行时常量池)

    1.什么是常量 用final修饰的成员变量表示常量,值一旦给定就无法改变! final修饰的变量有三种:静态变量.实例变量和局部变量,分别表示三种类型的常量. Java中的常量池,实际上分为两种形态: ...

  9. java多态编译,java多态 运行时多态和编译时多态

    java多态 运行时多态和编译时多态 我们知道java的多态是一个重要的特性,其中体现java的多态有两种形式.运行时的多态和编译时的多态. 编译时的多态会发生在方法重载的时候,方法的重载指方法名相同 ...

最新文章

  1. PHP也玩并发,巧用curl 并发减少后端访问时间
  2. 幂等性 第三方交易编号_java幂等性的解决方案
  3. Openfire 源码部署
  4. 白话Elasticsearch73_ES生产集群中的索引管理01
  5. 长安大学第三届ACM-ICPC程序设计竞赛 E题
  6. 停止从域服务器同步文件,域控制器不同步处理办法
  7. 《娱乐至死》读书笔记(part4)--只有给观众他们想要的东西,你才可以得到市场占有率
  8. MAC电脑8款常用设计工具推荐
  9. mysql的复制订阅_如何删除发布与复制订阅数据库 'distribuion' 的方法
  10. 639. 解码方法 II
  11. centos桌面系统怎么退回终端系统_【社群话题分享】Linux 各大发行版你怎么选?...
  12. mysqli取代mysql,什么时候应该使用MySQLi代替MySQL?
  13. [AIR] 获取U盘,打开U盘
  14. 100天搞定机器学习|Day4-6 逻辑回归
  15. 2019年全国大学生电子设计竞赛试题 简易电路特性测试仪(D) 题 设计报告
  16. WINDOWS优化大师揭密
  17. ubuntu 火狐浏览器找不到服务器
  18. 基于群智能算法的函数最值优化问题
  19. Acwing 1191. 家谱树
  20. 怎么在unity中测试游戏_Unity中的性能基准测试:如何开始

热门文章

  1. 十五步骤手把手学会制作网吧XP母盘制作
  2. 【转贴】想应聘的瞧仔细了:HW分析大全
  3. 数据可视化机器学习工具在线_为什么您不能跳过学习数据可视化
  4. 渐进式web应用程序_渐进式Web应用程序与加速的移动页面:有什么区别,哪种最适合您?
  5. redux ngrx_另一个减少Redux(NGRX)应用程序样板的指南
  6. js判断对象还是数组
  7. mongoDB操作详细
  8. 浅谈项目管理中的四要素
  9. webdriverAPI-Java
  10. 业务逻辑 : forex mlm