A. x86与arm架构区别对比分析 x86与arm架构哪个好
x86架构和arm架构实际上就是CISC与RISC之间的区别,很多用户不理解它们两个之间到底有哪些区别,实际就是它们的领域不太相同,然后追求也不相同。
x86架构和arm架构区别:
1、追求不同:
X86主要追求性能,但会导致功耗大,不节能,而ARM则是追求节能,低功耗,但和X86相比性能较差。
2、哪弯领域不同:
ARM主要应用于移动终端之中,类如手机,平板等,而X86则是主要应用于Intel,AMD等PC机,X86服务器中。
3、本质不同:
X86采用CISC复杂指令集计算机,而ARM采李轿闷用的是RISC精简指令集计算机。
4、CISC与RISC的不同:
CISC是复帆念杂指令集CPU,指令较多,因此使得CPU电路设计复杂,功耗大,但是对应编译器的设计简单。
RISC的精简指令集CPU,指令较少,功耗比较小,但编译器设计很复杂,它的关键在与流水线操作能在一个时钟周期完成多条指令。
B. 使用NDK-R8版本编译X86平台下使用的so文件时报错。 什么都不改去编译arm平台正常。求高手指教~~
在android.mk文件贺羡春中派戚加入:
LOCAL_LDLIBS += -L$(NDK_ROOT)/sources/cxx-stl/禅耐stlport/libs/armeabi -lstlport_static
C. X86与Arm架构的区别,以及新兴开源指令集架构
书接上文【当下主流处理器(CPU)介绍】在文章中我们提到手机端处理器与PC端处理器在制程工艺,功耗,性能上的差距本质上都来自于他们采用的指令集架构不同,本文我们就来简单探讨一下当下最最主流的两种架构 X86 , Arm 架构的底层差距,解释一下为啥会造成上文闷知御所提到的种种差异,同时也简单聊聊几大开源的新兴指令集架构。
【 同样,为了提高易读性,我们也不拽那么多专有名词,对于有需要扩展的地方也点到为止。 】
无论是 X86 还是 Arm 背后支撑他们的都是一套完善且专属的指令集,那么什么是指令集呢,这里我们可以简单理解成我们日常语言中的单词,一句完整的话蚂岩就是将特定的单词按照特定的顺序组合在一起,同样对于计算机(手机也属于计算机)来讲每一次执行一个一个命令就是将特定的指令按照特定的顺序执行一次。
复杂指令集(cisc) :它的设计目的是用最少的机器语言猛春来搞定所需要的的设计任务,简而言之就是人狠话不多,所以他有个前提是本人一定要狠。
精简指令集(risc) :它的设计目的是软件来指定每个操作的步骤,用特地的操作步骤用执行几条指令来替代复杂指令集里面的某条指令,简而言之,人怂破事多,所以自身要求不那么高,(当然这是相对于复杂指令集来讲)。
CISC月RISC的内功心法:
除了 X86 与Arm这两个老大哥其实还有其他的指令集架构他们分别在不同的领域发光发热,比如 RISC-V 与 MIPS 这两个小老弟也渐渐崭露头角了。
这次简单聊了一下CPU背后的秘密,指令集架构,搞清楚了我们平时网上看到或者听别人说的 x86 与 Arm 等是什么东东,其实聊的很浅很浅,如果有兴趣可以去深入了解这方面,从他们的诞生到发展一路过来也是很奇幻的,这些东西构建了我们现在的互联网文明,我们国家在这方面的积累还是太少了,好不容易看到了龙芯的 Loongarch 的架构虽然网络上对它的褒贬不一,我还是很激动,它给了看到了希望和惊喜。
预告: 下一篇,我们聊聊苹果的M系列芯片
D. 说说Android项目中的armeabi,armeabi-v7a和x86
这三者都表示的是CPU类型,早期的Android系统几乎只支持ARMv5的CPU架构,但是现在已经有7种了。ARMv5,ARMv7 (从2010年起),x86 (从2011年起),MIPS (从2012年起),ARMv8,MIPS64和x86_64 (从2014年起),每一种都关联着一个相应的ABI(应用程序二进制接口(ApplicationBinary Interface)定义了二进制文件(尤其是.so文件)如何运行在相应的系统平台上,从使用的指令集,内存对齐到可用的系统函数库)。Android现在的主流CPU是armeabi-v7a。armeabi-v7a是针对有浮点运算或高级扩展功能的ARMv7 CPU。
当一个应用安装在设备上,只有该设备支持的CPU架构对应的.so文件会被安装。不同CPU架构的Android手机加载时会在libs下找自己对应的目录,从对应的目录下寻找需要的.so文件;如果没有对应的目录,就会去armeabi下去寻找,如果已经有对应的目录,但是如果没有找到对应的.so文件,也不会去armeabi下去寻找了。
以x86设备为例,x86设备会在项目中的 libs文件夹寻找是否含有x86文件夹,如果含有x86文件夹,则默认为该项目有x86对应的so可运行文件,只有x86文件夹而文件夹下没有so,程序运行也是会出现findlibrary returned null的错误的;如果工程本身不含有x86文件夹,则会寻找armeabi或者armeabi-v7a文件夹,兼容运行。以armeabi-v7a设备为例,该Android设备当然优先寻找libs目录下的armeabi-v7a文件夹,同样,如果只有armeabi-v7a文件夹而没有 so也是会报错的;如果找不到armeabi-v7a文件夹,则寻找armeabi文件夹,兼容运行该文件夹下的so,但是不能兼容运行x86的so。所以项目中如果只含有x86的so,在armeabi和armeabi-v7a也是无法运行的。以上就是不同CPU架构运行时加载so的策略。
目前主流的Android设备是armeabi-v7a架构的,然后就是x86和armeabi了。如果同时包含了 armeabi,armeabi-v7a和x86,所有设备都可以运行,程序在运行的时候去加载不同平台对应的so,这是较为完美的一种解决方案,但是同时也会导致包变大。
armeabi-v7a是可以兼容armeabi的,而v7a的CPU支持硬件浮点运算,目前绝大对数设备已经是armeabi-v7a了,所以为了性能上的更优,就不要为了兼容放到armeabi下了。x86也是可以兼容armeabi平台运行的,另外需要指出的是,打出包的x86的so,总会比armeabi平台的体积更小,对于性能有洁癖的童鞋们,还是建议在打包so的时候支持x86。
第三方的类库只提供了armeabi下的.so文件,我们项目里适配了armeabi-v7a和x86,如果不在对应的文件下放对应的.so文件,就可能导致某些Android设备会出一些问题,我们可以复制armeabi下得.so文件到不同的文件夹下。如果第三方提供了不同平台的.so文件,则复制不同平台的.so文件到项目中对应的文件夹下即可。
关于.so文件之前有一个坑,svn会把提交的so文件过滤掉,在接第三方SDK的时候通过SVN更新了文档,但是没有注意到少了几个so文件,浪费了大把的时间去找原因。记得去掉svn对so的忽略!!!
E. 请问下x86 linux下的uuid.h libuuid.so libuuid.a和arm下以及MIPS下是一样的吗
cup指令集都不一样,找到对应库的源码,在mips下编译就好了
F. arm和x86区别
X86架构与ARM架构的区别:
1、含义不同:
X86使用CISC(Complex Instruction Set Computer,复杂指令集计算机)。
ARM使用RISC(Reced Instruction Set Computer,精简指友穗令集计算机),ARM英文全称Advanced RISC Machine。
2、产品特点:
X86追求性能最优,缺点是功耗大,不节能(和ARM对比)。
ARM追求好数卜低功耗(节能),缺点是采用精简指令集,导致编译器处理复杂,因此性能相对X86差。
3、所用机型不一样:
X86主要是PC机(Intel、AMD),X86服务器。
ARM主要是应用于移动设备(手机、平板电脑等嵌入式领域)。
4、典型代表:毕敬X86结构主要是Intel、AMD等PC电脑;ARM主要是移动终端,IBM的Power PC。
G. linux 下用arm体系QT编译问题(目前我系统里有X86 和 arm体系(老师编好的)的QT各一个)
貌似是缺少系统库,有些版本的linux编译qt是会出现缺少系统库而导致编译不成功的问题,不是很推荐用最新的编译器来编译,其实2.4的内核和3.4.5的编译器做qt就已经足够了,你可以去查查看那些版本的linux下可以成功的编译qt,安装的时候尽可能把开发用的库都选上,不然就只有自己再去打补丁,
仅作参考
H. x86与ARM架构下的编译器的区别
ARM是简单指令集。。。 指令集长度短
I. 在仅有x86服务器或者云服务器下如何编译出arm环境下执行的
在仅有x86服务器或者云服务器下编译出arm环境下执行步骤如下。
1、首先,安装qemu-user安装包,并更新qemu-arm的状态。
2、查看qemu-arm的版本。
3、下载arm架构的容器(在dockerhub可以找到各种非x86架构的镜像)。
4、最后进入容器访问。
J. 为什么x86和arm的架构不同,但是都能装linux呢,他们的编译时如何实现的。
rm架构和x86架构区别:
一、性能:
X86结构的电脑无论如何都比ARM结构的系统在性能方面要快得多、强得多。X86的CPU随便就是1G以上、双核、四核大行其道,通常使用45nm(甚至更高级)制程的工艺进行生产;
而ARM方面:CPU通常是几百兆,最近才出现1G左右的CPU,制程通常使用不到65nm制程的工艺,可以说在性能和生产工艺方面ARM根本不是X86结构系统的对手。
但ARM的优势不在于性能强大而在于效率,ARM采用RISC流水线指令集,在完成综合性工作方面根本就处于劣势,而在一些任务相对固定的应用场合其优势就能发挥得淋漓尽致。
二、扩展能力:
X86结构的电脑采用“桥”的方式与扩展设备(如:硬盘、内存等)进行连接,而且x86结构的电脑出现了近30年,其配套扩展的设备种类多、价格也比较便宜,所以x86结构的电脑能很容易进行性能扩展,如增加内存、硬盘等。
ARM结构的电脑是通过专用的数据接口使CPU与数据存储设备进行连接,所以ARM的存储、内存等性能扩展难以进行(一般在产品设计时已经定好其内存及数据存储的容量),所以采用ARM结构的系统,一般不考虑扩展。基本奉行“够用就好”的原则。
三实现编译:
因为linux是系统,他支持现在大多数的结构体系。而要使他移植到相应的不同的硬件平台上时,需要对内核源码进行相对应的交叉编译处理,然后才能进行烧写运行,因为都有驱动只要那个系统有对应平台的驱动就可以。
(10)x86编译与ARM编译so扩展阅读:
Linux常用命令
1、pwd命令该命令的英文解释为print working directory(打印工作目录)。
2、输入pwd命令,Linux会输出当前目录。
3、cd命令cd命令用来改变所在目录。
4、cd / 转到根目录中
5、cd ~ 转到/home/user用户目录下
6、cd /usr 转到根目录下的usr目录中-------------绝对路径
7、cd test 转到当前目录下的test子目录中-------相对路径
8、cat命令可以用来合并文件,也可以用来在屏幕上显示整个文件的内容。
9、cat snow.txt 该命令显示文件snow.txt的内容,ctrl+D退出cat。