当前位置:  开发笔记 > 编程语言 > 正文

如何测试共享对象是32位还是64位?

如何解决《如何测试共享对象是32位还是64位?》经验,为你挑选了1个好方法。

我正在开发一个C ++应用程序,在这里我需要测试.SO是32位还是64位,然后再加载它。

我设法在Windows上使用Headers文件进行了评估。

现在,我正在寻找一种在Linux中进行评估的方法。

最初,我想使用C ++中的函数或方法来执行此操作,即不调用system()外部程序(fileobjdump...)。

如果我们的社区可以帮助我找到解决方案,我将非常感谢。

谢谢!



1> walnut..:

.so文件使用ELF格式。ELF标头有两种变体,分别适用于32位和64位平台。文件包含两个文件中的哪一个取决于文件中的字节0x04。它适用1于32位格式和264位格式。

您可以简单地读取并测试该字节。

也可以从字节0x12和0x13确定编译机器代码的实际指令集,例如0x03x86和0x3Efor x86_64。请注意,两个字节的字节序由字节0x05决定,字节1序为小字节序或2大字节序。

另请参阅有关ELF格式的维基百科文章。

推荐阅读
女女的家_747
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有