什么是ARM EABI 交叉编译器

发布时间:

下面是CodeSourcery网站上几个有关EABI概念的FAQ
bywzp
WhatistheABIfortheARMArchitecture?IsitthesameastheARMEABI?
Question
WhatistheABIfortheARMArchitecture?IsitthesameastheARMEABI?
Answer
TheABIfortheARMArchitectureisastandarddevelopedbyARManditspartnersthatexplainshowcompilers,assemblers,linkers,andothersimilartoolsshouldgenerateobjectfilesandexecutablefiles.
ToolsthatcorrectlyimplementtheABIfortheARMArchitecturecaninteroperate;i.e.,objectfilesbuiltwithonetoolchaincanbecombinedwithobjectfilesbuiltwithanothertoolchainifbothcompilersusetheABIfortheARMArchitectureandprovidedthatthecodecompiledobservescertainconventions.
CodeSourcerywasanactiveparticipantinthedesignoftheABIfortheARMArchitecture.(Infact,theC++ABIusedbyARMisderivedfromtheItaniumC++ABIco-designedbyCodeSourcery.CodeSourcerycontinuestoworkwithARM,Ltd.tovalidateinteroperabilitybetweenSourceryCodeBenchandARM'sproprietarytools.
The"ARMEABI"isaninformalnamefortheABIfortheARMArchitecture.
ARMABIARM结构下的一个编译规范和标准
符合ABI标准的编译工具编译出来的目标文件是互相融合的ARMEABIARMABI的非正式称呼
IsitpossibletorunbothEABIand
non-EABIbinariesonthesamesystem?
Question
IsitpossibletorunbothEABIandnon-EABIbinariesonthesamesystem?
Answer
Yes,itispossible.However,runningadual-ABIsystemrequirescare.Ifyouhaveanold-ABIsystem,andwanttorunEABIbinaries,youhaveseveralchoices.Oneoptionistolinkyourprogramsstatically,usingthe-staticoption.However,linkingdynamicallyisgenerallyasuperiorapproach.CodeSourcery'stoolchainsuseadifferentdynamicloader(ld.so.3,soit

ispossibleforold-ABIandEABIbinariestocoexist.However,youwillhavetoensurethatwhenyouinstalltheEABIlibrariesyoudonotoverwriteexistinglibraries,andyouwillhavetosetLD_LIBRARY_PATHsothatthedynamicloadercanfindthem.
可以同时使用EABI和非EABI的两套库,但有些地方需要注意。可行的几种方案:(1)使用静态库链接程序。(2)工具链本身提供一个动态加载器,需要注意安装EABI库时不要覆盖原来的库,并指定LD_LIBRARY_PATH

WhyistheconfigurationnameforGNU/Linux"arm-none-linux-gnueabi"insteadofjust"arm-none-linux-eabi"?IsthereaGNUvariantoftheEABI?
Question
WhyistheconfigurationnameforGNU/Linuxarm-none-linux-gnueabiinsteadofjust
arm-none-linux-eabi?IsthereaGNUvariantoftheEABI?
Answer
TheFreeSoftwareFoundationprefersthatconfigurationnamesforGNU/Linuxcontainboththestringlinuxandthestringgnu.Theconfigurationarm-none-linux-gnureferstothelegacyARMABIforGNU/Linux.Sometoolsdependonthefactthatconfigurationnameshaveatmostthreehyphens,sognuandeabiwerecombinedintoasingleword.
TheABIusedonGNU/LinuxisnotaspecialGNUvariantoftheEABI;itisjusttheEABI.
GNU/Linux上用的ABI并不是EABIGNU的变种,它就是EABI
IstheARMGNU/LinuxABIdocumented?
Question
IstheARMGNU/LinuxABIdocumented?
Answer
Yes,thereisanARMGNU/LinuxABIsupplement.
ThesupplementisverysmallbecausemostoftheABIisspecifiedintheABIfortheARMArchitecture.TheGNU/LinuxsupplementjustspecifiesthoseaspectsoftheABIthattheABIfortheARMArchitectureleavestothediscretionofparticularplatforms.
ARMGNU/LinuxABI文档见附件,它内容不多,只是ABIARM平台上实现的的一些约定。

什么是ARM EABI 交叉编译器

相关推荐