你前提到的嵌入式Linux开发中的EABI我查了一下,象是类似上GCC类同的开发软件,不同的是它是用在以Linux为基础平台的开发系统中。而不象GCC是用在Unix *** 作系统和微软的Windows系统中的。
我这只在抛砖引玉,你可按我这思路再去查证核实。因我没玩过Linux和你说的这EABI。所以如我这有错可不三包的哟,希你注意!!!呵呵。
现在android的工程大部分是用clang编译,在之前的android工程主要是使用gcc,也就是arm-linux-androideabi-gcc,但是其他嵌入式系统使用的是arm-linux-gnueabi,那么这两个有什么区别呢? 能不能混用呢?先说区别,根据linaro给的,主要有三处
1)There are a few differences between the Linux EABI and Android EABI definitions - most notably, Android defines the size of an enum to 32 bits while regular Linux defines it as variable.
2)Android does not currently use the hardfloat ABI conventions that have become common in regular Linux.
3)Android uses the Gold linker by default while the regular Linux builds default to using the BFD linker (this is for upstream compatibility - Android uses gold while most regular Linux distributions use the BFD linker).
翻译后是两者之前区别很少,主要有enum不一样,谷歌定义enum为32为,而其他的都定义为变量。android编译器使用的是softfp,而其他的使用的是hardfloat,如果使用linux-arm-gnueabi编译android工程的话,会出现“unrecognized option '-mfloat-abi=softfp'”就是指的这个,第三个是linker不同,这个应该好理解,android在bionic中定制了linker。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)