编译问题处理:undefined symbol: OPENSSL_init_crypto

结论:

Python 2.7 编译_hashlib.so 提示undefined symbol: OPENSSL_init_crypto问题;

原因为openssl版本不匹配,所需要的symbol在该版本库中没有实现;
针对于本次问题,将openssl version 配置为1.0.1f
并将其关联库删除后重新编译,编译通过(PS:这里需要注意编译时实际使用的lib库的路径,避免出现版本安装为1.0.1f后相关库仍使用原来版本,导致无法编译通过的问题);

问题分析过程:

  1. Hypervisor编译dom0 失败;

    可以看到为_hashlib 模块编译失败,则在log信息中搜索该模块,查看具体信息:

    这里可以获取到这些信息:

    1. 根据头文件和源文件编译_hashopenssl.o

    2. 在_hashopenssl.o的基础上链接 -lssl -lcrypto -lpython2.7
      这三个库生成_hashlib.so

    3. 链接过程中检测没有OPENSSL_init_crypto 符号报错

  2. 从报错信息来看应该是在链接过程中出错,则怀疑点:

    1. 依赖库的版本不对,缺少依赖的符号;

    2. 库的版本是对的,但是实际使用的与设想的不一致;

    3. 当然也不排除_hashopenssl.o存在问题导致后续异常;

  3. 逐步判断:

    1. 生成目录host-python-2.7.15/Modules/ 中没有_hashopenssl.o

    2. 生成目录host-python-2.7.15/build/lib.linux-x86_64-2.7/_hashlib.so但是有个_hashlib_fail.so

    3. 直接拷贝编译log中命令,单步执行上述两个操作,发现_hashopenssl.o 和
      _hashlib.so都可以正常生成,grep
      检索该库,确实没有OPENSSL_init_crypto符号,则问题确实是出在依赖库上;

    4. 通过ldd查看生成库的链接库位置,逐个确认版本信息:

      版本都没有问题,则是否有使用与check库不一致的情况,经过检查发现由于openssl
      原始版本为1.1.1a,后续修改为1.0.1f,但是这里使用的库的版本仍为1.1.1a的版本,而非新安装的版本,将对应旧版本库删除后可以编译通过;

总结

  1. 整体排查思路就是根据log细化到问题模块,单步执行,根据信息提示确认怀疑点,逐个确认;

  2. 排查过程中使用locate、file、ls -al、ldd等确认依赖库版本

  3. 通过make V=1等命令的使用添加打印,单步执行命令,逐步确认问题;

主要基于gcc的编译体系

编译问题处理:undefined symbol: OPENSSL_init_crypto相关推荐

  1. keil编译出现错误Undefined symbol __aeabi_assert,解决办法

    .\Objects\templet.axf: Error: L6218E: Undefined symbol __aeabi_assert (referred from lianbiao.o). 解决 ...

  2. 编译报错undefined symbol: vtable for

    报错:undefined symbol: vtable for 原因:结构体/类中的某个方法不是纯虚函数,而且没有被定义. 解决方法:找到这个没有被定义的函数,然后定义即可.

  3. keil编译时提示 Undefined symbol __ROR

    __ROR是一个移位的操作,它是一个汇编函数: __ROR 也好,__WFI也好,__STATIC_INLINE__也好这类错误主要是因为keil版本的问题,不同的版本之间有大小写的变化.一般是低版本 ...

  4. 动态库编译通过,调用动态库函数运行出现undefined symbol

    编了一个动态库,写测试程序去调用动态库,程序编译通过,调用动态库里函数出错,通过加上动态库相关依赖库以及 extern"C"声明解决该错误以下,详细说明解决经过: 首先,刚编译好的 ...

  5. 关于STM32 Hal 库函数编写的程序 在编译时报错 :“Error: L6218E: Undefined symbol 函数名 (referred from xx.o)” 的解决办法

    问题描述:在借鉴别人的程序时,直接把部分hal库的程序拿来用,在编译时出现下图所示的问题 1 . 尝试解决但是没有成功的办法: 1.1 头文件包含问题 一开始以为是没有包含头文件,将头文件包含后,再次 ...

  6. KEIL5 MDK编译后出现.\Output\led.axf: Error: L6218E: Undefined symbol SystemInitreferred from startup_解决方案

    KEIL5 MDK 编译后出现错误提示信息 .\Output\led.axf: Error: L6218E: Undefined symbol SystemInit (referred from st ...

  7. MDK编译出现*.axf: Error: L6218E: Undefined symbol 问题解决方法

    本文参考此贴写成,原帖链接 http://blog.csdn.net/yx_l128125/article/details/9231385 在使用MDK编译工程时出现了如下错误,test.axf: E ...

  8. HAL库 编译错误:XXX.axf: Error: L6218E: Undefined symbol xxx (referred from xxxx.o)的可能原因之一及解决方法

    我在学习STM32 HAL库版本时遇到了这种编译问题 由于是刚开始学习STM32代码跟例程是一样的,所以代码不可能出错.我去网上寻找答案看到了 (7条消息) (已解决)STM32报错Error: L6 ...

  9. Keil编译下出现axf: Error: L6218E: Undefined symbol

    摘要 使用STM32F0的主控芯片,Keil编译环境,编译能通过,链接出现axf: Error: L6218E: Undefined symbol 故障 解决措施一 stm32f0xx_hal_con ...

  10. [STM32问题解决(1)]一类问题的解决办法——编译错误:XXX.axf: Error: L6218E: Undefined symbol xxx (referred from xxxx.o).

    目录 1 问题说明 1.1 问题回顾 1.2 寻找解答所犯的错误 2 解决办法(试用于一系列问题) 2.1 重审问题 2.1.1 Undefined symbol xxx.c 2.1.2 referr ...

最新文章

  1. layui table 设置滚动条
  2. 7-3 jmu-Java-06异常-03-throw与throws (10 分)
  3. maven POM.xml内的标签大全详解
  4. 三维向量变化为角度_物体的三维识别与6D位姿估计:PPF系列论文介绍(四)
  5. python3 for sum_Python for循环和“sum13”方法
  6. DB2 SQL Error: SQLCODE=-668, SQLSTATE=57016
  7. “硬件极客”:树莓派Raspberrypi安装Kali Linux保姆教程(通过树莓派安装ARM Kali教程)
  8. Python编程之求字符串长度
  9. python判断整数浮点数_Python初识2 整数与浮点数
  10. 数据结构教程(c语言)(已完结)
  11. DenseTNT翻译
  12. 蔡颖-《APS走向实践》书解读之二:需求驱动-预测、掌握、满足需求
  13. Linux中ibus输入法中全拼和双拼的问题+解决VNCserver切换不成功问题
  14. 计算机鼠标不显示桌面,电脑开机后不显示桌面只有鼠标箭头,怎么回事
  15. 【木头Cocos2d-x 026】Lua篇(第01章):让Lua和C++牵手
  16. unity3D之简单的碰撞检测 .
  17. Windows Terminal美化杂记-Windows Terminal使用与配置
  18. win7 屏保播放视频
  19. 洛谷P1007——独木桥 解法 (C++)
  20. TVS管与ESD保护二极管的区别

热门文章

  1. ubuntu18.04新体验
  2. 登录首页时报错:java.lang.IllegalArgumentException (不合法的参数异常)
  3. c# owc11 双Y轴
  4. 在Java中如何高效判断数组中是否包含某个元素
  5. 企业搜索 Solr7 安装部署
  6. Apache Spark Meetup China 第1期 最全资料下载
  7. python中的urllib模块中的方法
  8. 深入学习之mysql(二)表的操作
  9. 倒计时的js实现 倒计时 js Jquery
  10. Microsoft® .NET Micro Framework简介