编译问题处理:undefined symbol: OPENSSL_init_crypto
编译问题处理: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后相关库仍使用原来版本,导致无法编译通过的问题);
问题分析过程:
Hypervisor编译dom0 失败;
可以看到为_hashlib 模块编译失败,则在log信息中搜索该模块,查看具体信息:
这里可以获取到这些信息:
根据头文件和源文件编译_hashopenssl.o
在_hashopenssl.o的基础上链接 -lssl -lcrypto -lpython2.7
这三个库生成_hashlib.so链接过程中检测没有OPENSSL_init_crypto 符号报错
从报错信息来看应该是在链接过程中出错,则怀疑点:
依赖库的版本不对,缺少依赖的符号;
库的版本是对的,但是实际使用的与设想的不一致;
当然也不排除_hashopenssl.o存在问题导致后续异常;
逐步判断:
生成目录host-python-2.7.15/Modules/ 中没有_hashopenssl.o
生成目录host-python-2.7.15/build/lib.linux-x86_64-2.7/_hashlib.so但是有个_hashlib_fail.so
直接拷贝编译log中命令,单步执行上述两个操作,发现_hashopenssl.o 和
_hashlib.so都可以正常生成,grep
检索该库,确实没有OPENSSL_init_crypto符号,则问题确实是出在依赖库上;通过ldd查看生成库的链接库位置,逐个确认版本信息:
版本都没有问题,则是否有使用与check库不一致的情况,经过检查发现由于openssl
原始版本为1.1.1a,后续修改为1.0.1f,但是这里使用的库的版本仍为1.1.1a的版本,而非新安装的版本,将对应旧版本库删除后可以编译通过;
总结
整体排查思路就是根据log细化到问题模块,单步执行,根据信息提示确认怀疑点,逐个确认;
排查过程中使用locate、file、ls -al、ldd等确认依赖库版本
通过make V=1等命令的使用添加打印,单步执行命令,逐步确认问题;
主要基于gcc的编译体系
编译问题处理:undefined symbol: OPENSSL_init_crypto相关推荐
- keil编译出现错误Undefined symbol __aeabi_assert,解决办法
.\Objects\templet.axf: Error: L6218E: Undefined symbol __aeabi_assert (referred from lianbiao.o). 解决 ...
- 编译报错undefined symbol: vtable for
报错:undefined symbol: vtable for 原因:结构体/类中的某个方法不是纯虚函数,而且没有被定义. 解决方法:找到这个没有被定义的函数,然后定义即可.
- keil编译时提示 Undefined symbol __ROR
__ROR是一个移位的操作,它是一个汇编函数: __ROR 也好,__WFI也好,__STATIC_INLINE__也好这类错误主要是因为keil版本的问题,不同的版本之间有大小写的变化.一般是低版本 ...
- 动态库编译通过,调用动态库函数运行出现undefined symbol
编了一个动态库,写测试程序去调用动态库,程序编译通过,调用动态库里函数出错,通过加上动态库相关依赖库以及 extern"C"声明解决该错误以下,详细说明解决经过: 首先,刚编译好的 ...
- 关于STM32 Hal 库函数编写的程序 在编译时报错 :“Error: L6218E: Undefined symbol 函数名 (referred from xx.o)” 的解决办法
问题描述:在借鉴别人的程序时,直接把部分hal库的程序拿来用,在编译时出现下图所示的问题 1 . 尝试解决但是没有成功的办法: 1.1 头文件包含问题 一开始以为是没有包含头文件,将头文件包含后,再次 ...
- 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 ...
- MDK编译出现*.axf: Error: L6218E: Undefined symbol 问题解决方法
本文参考此贴写成,原帖链接 http://blog.csdn.net/yx_l128125/article/details/9231385 在使用MDK编译工程时出现了如下错误,test.axf: E ...
- HAL库 编译错误:XXX.axf: Error: L6218E: Undefined symbol xxx (referred from xxxx.o)的可能原因之一及解决方法
我在学习STM32 HAL库版本时遇到了这种编译问题 由于是刚开始学习STM32代码跟例程是一样的,所以代码不可能出错.我去网上寻找答案看到了 (7条消息) (已解决)STM32报错Error: L6 ...
- Keil编译下出现axf: Error: L6218E: Undefined symbol
摘要 使用STM32F0的主控芯片,Keil编译环境,编译能通过,链接出现axf: Error: L6218E: Undefined symbol 故障 解决措施一 stm32f0xx_hal_con ...
- [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 ...
最新文章
- layui table 设置滚动条
- 7-3 jmu-Java-06异常-03-throw与throws (10 分)
- maven POM.xml内的标签大全详解
- 三维向量变化为角度_物体的三维识别与6D位姿估计:PPF系列论文介绍(四)
- python3 for sum_Python for循环和“sum13”方法
- DB2 SQL Error: SQLCODE=-668, SQLSTATE=57016
- “硬件极客”:树莓派Raspberrypi安装Kali Linux保姆教程(通过树莓派安装ARM Kali教程)
- Python编程之求字符串长度
- python判断整数浮点数_Python初识2 整数与浮点数
- 数据结构教程(c语言)(已完结)
- DenseTNT翻译
- 蔡颖-《APS走向实践》书解读之二:需求驱动-预测、掌握、满足需求
- Linux中ibus输入法中全拼和双拼的问题+解决VNCserver切换不成功问题
- 计算机鼠标不显示桌面,电脑开机后不显示桌面只有鼠标箭头,怎么回事
- 【木头Cocos2d-x 026】Lua篇(第01章):让Lua和C++牵手
- unity3D之简单的碰撞检测 .
- Windows Terminal美化杂记-Windows Terminal使用与配置
- win7 屏保播放视频
- 洛谷P1007——独木桥 解法 (C++)
- TVS管与ESD保护二极管的区别