这里有两个问题:
将共享库移植到许多linux或android on arm系统时,需要知道gcc交叉编译器支持的eabi版本以及默认的eabi版本。怎么做?
如何调查哪个eabi拥有目标linux或android系统?我通常从目标板获取任何系统库,然后调用$ARM-GCC-PREFIX-readelf -h $LIBNAME | grep Flags
返回smth。就像Version4 EABI
。但是有没有什么漂亮的方法可以让我不需要将系统库从目标复制到主机来运行readelf
?
最佳答案
在我看来,您已经找到了一种真正的方法来识别文件使用的ABI。我不知道还有比readelf
更好的方法。
类似地,readelf
可能是确定编译器使用的默认abi的最佳方法。
编译器实际上不允许您选择任何特定的ABI版本。它只允许您在各种ABI变体之间进行选择。编译器只实现在编写时当前的abi。无论如何,EABI应该是向后兼容的。
也许真正的问题是支持什么架构?或者什么漂浮物?在为特定设备构建时,这些非常重要。
关于linux - 如何找到GCC支持的所有EABI版本,以及如何找到目标系统的EABI版本?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8939673/