无法在64位VM上运行32位程序

杰伊

我在Ubuntu 10.04 32位计算机上编译了一个小的“ hello world” C程序。然后,我将可执行文件(a.out)放在Ubuntu 12.10(64位)VMWare虚拟机上,并尝试执行它(./a.out)。操作系统无法识别文件,并显示“无此文件或目录”。但是,当我将相同的可执行文件放在64位笔记本电脑上运行的Ubuntu 12.10(64位)上时,它运行良好,并且得到了所需的输出。VM正在IBM刀片服务器上运行。我想知道为什么虚拟机的结果?

拉杜·拉迪亚努(RaduRădeanu)

该消息No such file or directory不涉及您的可执行文件:a.out相反,它是指运行32位动态链接的可执行文件所需帮助程序a.out

现在,我在这篇不错的文章中对所有这些进行了很好的解释:

静态和动态链接

二进制可执行文件有两种类型:静态链接的可执行文件和动态链接的可执行文件。首先是关于静态链接的函数:当程序要调用库函数时,它通过名称来引用它。从源代码构建程序时,程序中使用的所有库函数都将从库复制到程序中。然后,程序包含其自己的代码以及所使用的库函数的代码。然后在调用位置将名称更改为程序中相应功能的地址。此过程称为链接,因为它会将函数名称与函数本身及其实现链接在一起。之所以称为static,是因为在构建程序后无法更改链接。

动态链接程序的工作方式不同:该程序还通过名称引用库函数。在构建程序时,将组装两个列表并将其与该程序一起存储:在哪个位置使用哪些库函数的列表,以及包含该程序使用的函数的库的列表。这就是构建程序的全部。

稍后,在执行时,一个特殊的帮助程序,即所谓的动态链接程序,在文件系统中的库列表中的每个库中查找特定位置,并将其加载到内存中。现在,动态链接器知道库函数在哪些内存地址可用。它使用第一个列表在调用库函数的所有位置写入正确的地址。然后可以运行动态链接的程序。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

无法在64位VM上运行32位程序

来自分类Dev

在64位gentoo linux上运行32位程序

来自分类Dev

在32位系统上运行64位程序

来自分类Dev

在64位Ubuntu 15.10上运行32位程序

来自分类Dev

在64位OS上编写程序时,程序是否可以在32位OS上运行?

来自分类Dev

ICreateDevEnum可以在32位上正常运行,但在64位上无法运行

来自分类Dev

为什么此代码无法在32位iOS上运行,而在64位上运行呢?

来自分类Dev

ICreateDevEnum可以在32位上正常运行,但在64位上无法运行

来自分类Dev

自定义构建的64位内核无法运行32位应用程序

来自分类Dev

尝试(失败)在Windows 10的64位Ubuntu上运行Hello World 32位C ++程序

来自分类Dev

如何在64位Debian / Ubuntu上运行32位程序?

来自分类Dev

在64位Linux机器上运行32位应用程序

来自分类Dev

如何在64位OSX 10.7.2上运行32位应用程序?

来自分类Dev

在32位Ubuntu系统上运行64位应用程序

来自分类Dev

如何在64位Fedora 17上运行32位程序?

来自分类Dev

32位应用程序可以在64位iPhone 5S上运行吗?

来自分类Dev

如何在32位架构上运行64位应用程序

来自分类Dev

xubuntu是否有可在32位和64位系统上运行的安装程序?

来自分类Dev

在没有sudo的64位Ubuntu上运行32位程序

来自分类Dev

尝试在64位Ubuntu 16.04 LTS上运行32位应用程序

来自分类Dev

如何在32位和64位系统上运行exe Java应用程序?

来自分类Dev

无法在64位Ubuntu上运行32位动态可执行文件

来自分类Dev

运行带有内存的32位程序以获得64位

来自分类Dev

在64位Linux上无法编译32位at&t汇编程序

来自分类Dev

我是否需要为 64 位机器上的 32 位应用程序部署 32 位或 64 位 VC++ 运行时?

来自分类Dev

在32位而不是64位上运行超线程?

来自分类Dev

在32位而不是64位上运行超线程?

来自分类Dev

无法在Mac 32位上运行Eclipse

来自分类Dev

无法在64位ubuntu上安装32位库

Related 相关文章

  1. 1

    无法在64位VM上运行32位程序

  2. 2

    在64位gentoo linux上运行32位程序

  3. 3

    在32位系统上运行64位程序

  4. 4

    在64位Ubuntu 15.10上运行32位程序

  5. 5

    在64位OS上编写程序时,程序是否可以在32位OS上运行?

  6. 6

    ICreateDevEnum可以在32位上正常运行,但在64位上无法运行

  7. 7

    为什么此代码无法在32位iOS上运行,而在64位上运行呢?

  8. 8

    ICreateDevEnum可以在32位上正常运行,但在64位上无法运行

  9. 9

    自定义构建的64位内核无法运行32位应用程序

  10. 10

    尝试(失败)在Windows 10的64位Ubuntu上运行Hello World 32位C ++程序

  11. 11

    如何在64位Debian / Ubuntu上运行32位程序?

  12. 12

    在64位Linux机器上运行32位应用程序

  13. 13

    如何在64位OSX 10.7.2上运行32位应用程序?

  14. 14

    在32位Ubuntu系统上运行64位应用程序

  15. 15

    如何在64位Fedora 17上运行32位程序?

  16. 16

    32位应用程序可以在64位iPhone 5S上运行吗?

  17. 17

    如何在32位架构上运行64位应用程序

  18. 18

    xubuntu是否有可在32位和64位系统上运行的安装程序?

  19. 19

    在没有sudo的64位Ubuntu上运行32位程序

  20. 20

    尝试在64位Ubuntu 16.04 LTS上运行32位应用程序

  21. 21

    如何在32位和64位系统上运行exe Java应用程序?

  22. 22

    无法在64位Ubuntu上运行32位动态可执行文件

  23. 23

    运行带有内存的32位程序以获得64位

  24. 24

    在64位Linux上无法编译32位at&t汇编程序

  25. 25

    我是否需要为 64 位机器上的 32 位应用程序部署 32 位或 64 位 VC++ 运行时?

  26. 26

    在32位而不是64位上运行超线程?

  27. 27

    在32位而不是64位上运行超线程?

  28. 28

    无法在Mac 32位上运行Eclipse

  29. 29

    无法在64位ubuntu上安装32位库

热门标签

归档