【问题标题】:I'm trying to relearn GCC C or C++ compiling help please我正在尝试重新学习 GCC C 或 C++ 编译帮助
【发布时间】:2015-05-20 05:38:31
【问题描述】:

这里有两个问题:

据此在其他地方的另一篇文章中- “必须在 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”吗? 我也不知道如何解决这个问题。

【问题讨论】:

  • 显示一些源代码,最重要的是真正的命令行。使用 -H 选项到 gcc 了解搜索的包含文件在哪里

标签: c++ linux gcc 64-bit x11


【解决方案1】:

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

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

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

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

【讨论】:

  • 谢谢 - 我想通了 - 我必须删除旧的 'o' 文件,然后我将 CFLAGS -m64 放入我的 MAKE 文件中,以防万一,然后再次运行 make,一切正常 - - sudo make install -- 全部完成 -- 谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-10
  • 2012-01-22
  • 2021-03-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多