让这个该死的服务跑起来了~

#前言

被该死的Openssl编译嘲讽了一个下午

之前的文章说了我的那个编译的问题,这里说下,知识点有点零散,最后的解决也是一个同事提示,感觉也有点奇葩的赶脚。到目前为止,我现在感受到了写文章的好处,昨晚的问题,发出去后,守望就找我,跟我说自己解决过这个问题,然后就巴拉巴拉了一下,我就知道怎么解决了,讲真的,搞这种开源库出现的问题很考验人,一个要懂这些东西,懂了之后还有会学,还需要用工具去分析。

我之前有一次开会跟老板说,三个臭皮匠能比上一个诸葛亮,我们做的很多工作都是搬运的行为,既然不是1000%的核心竞争力,那么知识沟通就显得非常重要,去获取别人知道的知识,也会一种技能,所以就出现了各种技术沟通交流群。

看看昨天的那个错误日志。

#正文

先分析下上面的原因,可能去看很多百度什么的,google什么的,说的都很诡异的。

  • 先看看这个文件存在不

从图片中提示的路径里面看,这个路径应该是没有问题了。

  • 再看这个文件的格式对不对

readelf -h libreadline.a看到这里我傻眼了,因为我们的新项目需要一个32位的服务,我是想编译32位的,但是这里是64位的库,能编译通过才怪。

这里说下这个工具 readelf ,这个工具可以用来查看文件的属性。比较具体的可以看这个链接

https://blog.csdn.net/yfldyxl/article/details/81566279

1、选项 -h(elf header),显示elf文件开始的文件头信息。

2、选项 -l(program headers),segments 显示程序头(段头)信息(如果有数据的话)。

3、选项 -S(p headers),ps 显示节头信息(如果有数据的话)。

4、选项 -g(p groups),显示节组信息(如果有数据的话)。

5、选项 -t,p-details 显示节的详细信息(-S的)。

6、选项 -s,symbols 显示符号表段中的项(如果有数据的话)。

7、选项 -e,headers 显示全部头信息,等价于: -h -l -S 。

8、选项 -n,notes 显示note段(内核注释)的信息 。

9、选项 -r,relocs 显示可重定位段的信息。

10、选项 -u,unwind 显示unwind段信息。当前只支持IA64 ELF的unwind段信息。

11、选项 -d,dynamic 显示动态段的信息。

12、选项 -V,version-info 显示版本段的信息。

13、选项 -A,arch-specific 显示CPU构架信息。

14、选项 -I,histogram 显示符号的时候,显示bucket list长度的柱状图。

15、选项 -x,hex-dump=<number or name> 以16进制方式显示指定段内内容。number指定段表中段的索引,或字符串指定文件中的段名

16、选项 -D,use-dynamic 使用动态段中的符号表显示符号,而不是使用符号段 。

17、选项 -a,all 显示全部信息,等价于 -h -l -S -s -r -d -V -A -I。

18、选项 -v,version 显示readelf的版本信息。

19、选项 -H,help 显示readelf所支持的命令行选项。

#过程很有意思

然后我就去看这个库在哪里生成的,然后就看到了readline这个东西,这个也是一个开源库,主要是用来处理数据格式转换的。

所以如果你是做开源方面的处理的话,可能会经常用来做上下位机的数据处理,里面还有一些samples文件,有兴趣的可以去看看。

Introduction

This is the Gnu Readline library, version 8.0.

The Readline library provides a set of functions for use by applications that allow users to edit command lines as they are typed in.  Both Emacs and vi editing modes are available.  The Readline library includes additional functions to maintain a list of previously-entered command lines, to recall and perhaps reedit those lines, and perform csh-like history expansion on previous commands.

然后我就去看这个库原来的编译方式,我们编译64位的时候,是这样编译的。

我们想编译32位的库需要修改为

主要区别在这个 --host的参数上 看看是什么意思这个参数的含义是在configure文件里面,不是在Makefile里面,Makefile是通过configure配置生成的,我刚开始还傻傻的去修改Makefile,这肯定是不对的。所以我们要修改什么,就通过配置传不同的内容进去。

cross-complie可以理解为交叉编译,一个在X86运行的电脑,需要编译ARM的东西,这就叫交叉。

而eabi 也是一个有意思的,abi对应一种指令集,不同的CPU框架有不同的指令集,现在不是出现了什么开源的CPU指令集,如果所有的CPU都支持相同的指令集,那肯定对我们非常有帮助,代码也修改比较少。

如果是 32位的,我们可以使用readelf -h 看里面的Flags。

我们经常看到的EABI是什么你们知道不?

EABI

Embedded Application Binary Interface

翻译成中文应该是
嵌入式应用二进制接口,我觉得还是我上面说的比较直接,就是不同的指令集。

安卓支持的CPU指令集框架如下
也可以认为Android支持的CPU种类如下

查看自己设备的CPU


最后成功跑起来的效果

中间省略了一些配置问题,还需要配合一个apk一起测试使用

大家好,在评论写出你在工作和学习中遇到的调试问题,我选出2位同学赠送2本50元以内的书籍,书籍你可以自己选择,你发购买链接给我让我代付就好了。

时间:截止2020年4月24号 20点

我选出后会评论回复你,然后你就可以加我微信跟我联系了。

最近支持星球大家慢慢形成了讨论的氛围,希望有学习困扰的同学一起加入。

5块钱加入我的知识星球~

感谢大家支持~

  回复「 篮球的大肚子」进入技术群聊

回复「1024」获取1000G学习资料

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/467730.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度学习概述

深度学习 传统学习与深度学习 深度学习应用特点 深度学习框架比较 Tensorflow 神经元 卷积核 分类 回归 生成

Python--递归

面向函数编程 def func():print(从前有座山&#xff0c;山里有座庙&#xff0c;庙里有个老和尚讲故事&#xff0c;讲的什么呀&#xff1f;)func() 解耦&#xff1a;尽量把不相关的功能拆开&#xff0c;用的时候再调用函数&#xff0c;增强代码重用性&#xff0c;减少代码变更的…

python相关知识介绍一种理财方法_我是如何使用python来确定理财策略的

老婆在朋友圈里看到了一条理财广告&#xff0c;一条很让人心动的广告&#xff0c;长下面这个样子。这是香港某保险公司的理财方案&#xff0c;大意是每年定投6.65万&#xff0c;投资5年&#xff0c;总共投资33万的样子&#xff0c;那么第10年&#xff0c;你将可以拿到38.6万&am…

传统神经网络

文章目录神经网络的起源&#xff1a;线性回归一个线性回归问题线性回归优化方法&#xff1a;梯度下降梯度计算梯度计算总结线性回归&#xff1a;输出线性回归&#xff1a;局限从线性到非线性非线性激励常用的非线性激励函数tanhRELULecky RELU神经元—神经网络神经网络构建神经…

[BZOJ1669][Usaco2006 Oct]Hungry Cows饥饿的奶牛

1669: [Usaco2006 Oct]Hungry Cows饥饿的奶牛 Time Limit: 5 Sec Memory Limit: 64 MB Submit: 1000 Solved: 655 [Submit][Status][Discuss]Description Farmer John养了N(1 < N < 5,000)头奶牛&#xff0c;每头牛都有一个不超过32位二进制数的正整数编号。FJ希望奶牛…

vue抽屉_VUE组件 之 Drawer 抽屉

{{ title }}Xprops: {//是否打开display: {type: Boolean},//标题title: {type: String,default: 标题},//是否显示关闭按钮closable: {type: Boolean,default: true},//是否显示遮罩mask: {type: Boolean,default: true},//是否点击遮罩关闭maskClosable: {type: Boolean,defa…

深度学习之卷积神经网络

文章目录深度学习之卷积神经网络链式反向梯度链式法则的计算神经网络中链式法则实例二、卷积神经网络-卷积层&#xff08;一&#xff09;什么是卷积层&#xff08;二&#xff09;有什么组成受什么影响&#xff0c;有何特点卷积网络正向传播反向传播卷积和神经网络功能层深度学习…

datatype未定义是什么意思_vue.js一直提示未定义

.sum_price);}temp_status 1;}else{for(var i0;ivm.list.status 0;}vm.total_price 0;temp_status 0;}//更新数据库api.ajax({url: update_allcart_status_url,method: post,timeout: 30,dataType: json,returnAll: false,data: {values: {token: $api.getStorage(token),d…

卷积神经网络高级篇

【 文章目录Alextnet参数计算VGG alexnet增强版VGG参数计算VGG作用GoogleNet 多分辨率融合全卷积神经网络RESNET结构特性有效性结构化图片特殊处理识别效果全局部卷积网络缺陷U-net图片生成网络VGG u-netAlextnet 参数计算 VGG alexnet增强版 VGG参数计算 VGG作用 GoogleNet 多…

sx1268 中文_STM32开发笔记85: SX1268驱动程序设计(芯片唤醒)

单片机型号&#xff1a;STM32L053R8T6本系列开发日志&#xff0c;将详述SX1268驱动程序的整个设计过程&#xff0c;本篇介绍芯片唤醒驱动程序。一、RxDutyCycle模式在讲述本篇内容之前&#xff0c;我们先来看一下SX1268的一种模式RxDutyCycle&#xff0c;译为中文为接收占空比模…

LinuxGPIO操作和MTK平台GPIO

GPIO口配置是一个历史性的问题&#xff0c;不管我们使用什么MCU&#xff0c;单片机也好&#xff0c;ARM也好&#xff0c;都离不开驱动GPIO口。Linux下有一个宏&#xff0c;GPIO_GPIO_SYSFS&#xff0c;打开这个宏后&#xff0c;编译烧录到设备端&#xff0c;去看看sys/class/gp…

Linux cpu亲和力

最近在对项目进行性能优化&#xff0c;由于在多核平台上&#xff0c;所以了解了些进程、线程绑定cpu核的问题&#xff0c;在这里将所学记录一下。不管是线程还是进程&#xff0c;都是通过设置亲和性(affinity)来达到目的。对于[进程]的情况&#xff0c;一般是使用sched_setaffi…

卷积神经网络(目标分类)

文章目录目标分类基本框架数据准备数据扩充数据规范模型设计任务分类局部更改训练细节目标分类基本框架 数据准备 现有数据集的子集&#xff0c;网络采集&#xff0c;现有数据人工标注 数据扩充 原始数据切割&#xff0c;噪声颜色等像素变化&#xff0c;旋转平移 数据规范…

unity获取电磁笔压感_【WPF】获取电磁笔的压感

WPF 不仅支持触控&#xff0c;也支持笔的输入&#xff0c;比如现在比较高大上的电磁笔。便宜的板子一般不配备电磁笔&#xff0c;而是配电容笔&#xff0c;虽然也号称XXX级压感&#xff0c;但是效果自然不可与电磁笔相比。UIElement 类规范了UI元素的基本轮廓&#xff0c;在该类…

安卓9.0添加服务修改SELinux

#文章目录#前言#SELinux来源#SELinux基本框架#SELinux 在不同版本的表现#使用audit2allow工具生成SELinux 权限#完整代码#前言先推荐下之前的SELinux文章&#xff0c;但是那个是7.1的&#xff0c;在9.0上已经在差别很大的了。Android7.1 在init.rc 添加shell服务题外话~在企业里…

卷积神经网络-目标探测

文章目录目标探测介绍任务思路DPMRCNN1&#xff09;候选区域选择2&#xff09;CNN特征提取3&#xff09;分类与边界回归R-CNN总结优点缺陷FAST-RCNNFASTER-RCNNYOLO目标探测介绍 任务 分类获取坐标 目标探测 图片分割 思路 回归问题&#xff1a;利用神经网络进行目标识别&am…

相机视场角和焦距_镜头小讲堂(一)镜头的焦距

在刚购买完相机的时候&#xff0c;我们久会考虑需要什么样的镜头来配合机身来使用。而市场上的镜头种类是在太多了&#xff0c;所以我们就要学习了解下镜头都有哪些种类&#xff0c;选择哪种镜头比较有优势。这也是学习摄影必备的基础知识。01 镜头的焦距焦距是镜头的重要指标&…

小程序开发过程注意事项

尽量避免使用 this.setData({});会让小程序页面会重新渲染&#xff0c;耗性能资源。 比如 &#xff0c;clickShow: function(e) {this.setData({comment: ""});var comment e.currentTarget.dataset.comment && this.data.comment "" ? e.curre…

C语言指定初始化器解析及其应用

由于笔者能力有限&#xff0c;文中如果出现错误的地方&#xff0c;欢迎大家给我指出来&#xff0c;我将不胜感激&#xff0c;谢谢&#xff5e;#指定初始化器的概念C90 标准要求初始化程序中的元素以固定的顺序出现&#xff0c;与要初始化的数组或结构体中的元素顺序相同。但是在…

python self 序列_python中序列化对象

# 序列化对象p1import pickle # 内置库class People:def __init__(self, name, age):self.name nameself.age agedef sayhi(self):print("Hi, my name is {}, and Im {}".format(self.name, self.age))p1 People(name"Jack&qu…