zoukankan      html  css  js  c++  java
  • c++编译后拷贝到其他服务器无法运行

    c++ 编译后拷贝到其他电脑无法运行问题排查
    问题描述
    docker打包运行 但镜像拷贝到其他服务器无法运行 在自身服务器能够运行,其他服务器自己打包也是能运行
    在程序中加上日志信息 定位到某对象的构造函数
    怀疑是dll的问题,将每个dll对比,没啥问题
    怀疑可能docker的问题 ,将问题拷贝到服务中运行 还是无法运行 错误码Illegal instruction
    使用ulimit -c unlimited 抓取dump包,gdb调试 ,发现卡在了一个不可能出错的位置,继续分析堆栈信息,最终是在mutex的构造函数中

     通过objdump  分析汇编 mutex_base处代码,未找到有效信息

    判断可能和std对应的so文件有关 ,尝试 ,失败

    继续对错误码分析 根据文档https://www.cnblogs.com/arnoldlu/p/10815908.html
    排查问题 看了下uname -a 都是x86架构的64位系统
    继续查找问题 想到之前为了调试 开了符号链接,
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -Wall -rdynamic -march=native -O2 -ftemplate-depth-1000")
    将改行注释,尝试运行 还是同样错误
    继续排查 思考是否是cpu指令集存在问题 通过 cat /proc/cpuinfo |grep flags 查看不同服务器的该参数,看不懂 ,但是存在不同
    使用 gcc -march=native -Q --help=target |grep march 继续查看 只要一个参数 且128服务器 和其他不同为knl 其他服务器为haswell 查询这个是二种cpu架构,判断可能和这有关
    修改cmakefile中CMAKE_CXX_FLAGS 将-march=native 改为-march=haswell 验证 能够运行

    确定是cpu架构不同导致的问题

    参考资料
    https://zhidao.baidu.com/question/1801074088485408387.html
    https://blog.csdn.net/weixin_30853329/article/details/96845540
    https://blog.csdn.net/qq_41565459/article/details/82991691

  • 相关阅读:
    2019.08.26 学习整理
    day28
    python-day25(正式学习)
    自闭的一天
    python-day18(正式学习)
    python-day17(正式学习)
    python-day16(正式学习)
    别点进来!!!
    python-day15(正式学习)
    python-day14(正式学习)
  • 原文地址:https://www.cnblogs.com/skycandy/p/13078118.html
Copyright © 2011-2022 走看看