这里有两个问题:

根据其他地方的另一篇文章 - “必须在 64 位版本的 Linux 上使用 GNU gcc 编译 32 位应用程序。

幸运的是,gcc 手册页将我引导至“-m32”和“-m64”选项。这些选项分别生成适用于 32 位或 64 位环境的代码。

32 位环境将 int、long 和指针设置为 32 位,并生成在任何 i386 系统上运行的代码。

64位环境将int设置为32位,long并将指针设置为64位,并为AMD的x86-64架构生成代码。”

我修改了这个 C 程序,添加了我想要和需要的功能 - 现在我已经从 32 位 Linux 迁移到 64 位 Linux,这个程序不再适用于 64 位 Linux。

在我超越自己之前--

问题:我现在是否必须使用 m64 将其重新编译为 64 位程序才能使其正常工作?

当我使用 -m32 重新编译它时,我也收到错误。

使用 Xlib.h

/usr/include/X11/Xlib.h:38:23: fatal error: sys/types.h: No such file or directory 

我已经用谷歌搜索到了这个错误 - 查看了几篇文章并确保我已经安装了 build-essential,而且确实如此。

和 xlib.h 也已安装。

这是在寻找引用 X11 的“sys/types.h”还是其他地方? 我也不知道如何解决这个问题。

请您参考如下方法:

Question: do I now have to re-compile it as a 64 bit program using m64 to get it to work?

如果您已有 32 位可执行文件,则应该能够在 64 位 Linux 上运行它。前提是您已安装所需的 32 位系统库。

when I recompiling it with the -m32 I get an error as well.

这很可能意味着您没有安装 32 位开发包。


评论关闭
IT源码网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!