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。