1。什麼是abi
oabi中的o,表示「old」,「lagacy」,舊的,過時的,oabi就是舊的/老的abi。
eabi中的e,表示「embedded」,是一種新的abi。
eabi有時候也叫做gnu eabi。
oabi和eabi都是專門針對arm的cpu來說的。
3。eabi的好處 / 為何要用eabi
a。支援軟體 浮點和硬體實現浮點功能混用
b。系統 呼叫的效率更高
c。今後的工具更相容
d。軟體浮點的情況下,eabi的軟體浮點的效率要比oabi高很多。
4。oabi和eabi的區別
兩種abi在如下方面有區別:
a。呼叫規則(包括引數如何傳遞及如何獲得返回值)
b。系統呼叫的數目以及應用程式應該如何去做系統呼叫
c。目標檔案 的二進位制格式,程式庫等
d。結構體中的 填充(padding/packing)和對齊。
e。oabi:
* abi flags passed to binutils: -mabi=apcs-gnu -mfpu=fpa
* gcc -dumpmachine: arm-unknown-linux
* objdump -x for compiled binary:
private flags = 2: [apcs-32] [fpa float format] [has entry point]* "file" on compiled debian binary:
elf 32-bit lsb executable, arm, version 1 (arm), for gnu/linux 2.2.0, dynamically linked (uses shared libs), for gnu/linux 2.2.0, stripped* "readelf -h | grep flags""
flags: 0x0eabi:
* abi flags passed by gcc to binutils: -mabi=aapcs-linux -mfloat-abi=soft -meabi=4
* gcc -dumpmachine: arm-unknown-linux-gnueabi
* objdump -x for compiled binary:
private flags = 4000002: [version4 eabi] [has entry point]* "file" on compiled binary (under debian):
elf 32-bit lsb executable, arm, version 1 (sysv), for gnu/linux 2.4.17, dynamically linked (uses shared libs), for gnu/linux 2.4.17, stripped* "readelf -h | grep flags""
flags: 0x4000002, has entry point, version4 eabi
[參考]
1。abi/eabi/oabi
2。why arm's eabi matters
3.[pdf]the new
armabi (eabi) and debian
armel
port
4 , armeabiport
5,arm官方的eabi標準文件
perl的arm平台移植
1.本人使用的是perl 5.22.0.tar.gz 2.解壓後到根目錄,執行configure 一直回車到最後,然後make編譯,儲存generate uudmap可執行檔案,後邊要用到 4.解壓補丁包,到perl的原始碼根目錄,替換相同檔案,同時修改cross目錄下的config檔案,依據自己的...
opencv移植到arm的出現的問題
1 bash configure bin sh m bad interpreter 沒有那個檔案或目錄 今天在交叉編譯jpeglib時,明明目錄下有configure檔案,但是執行就報此問題 bash configure bin sh m bad interpreter 沒有那個檔案或目錄 goog...
ARM下一些常用庫的移植
一些庫在各個專案經常重用.如jpeg,freetype,iconv 等.每次大型專案均會反覆重用.因此按照原來專案規範,一般都放在專案libs目錄下,但後來發現,每個專案都做重複操作.也完全沒有必要.因為現在是將其歸綱到乙個comm lib公用資訊.以下是常用庫的arm linux移植,我是放在 h...