0

我正在尝试编译一个名为tcpslice的小实用程序。这是典型的 GNU C 应用程序。当我运行时./configure,这是输出:

检查构建系统类型...无效配置“x86_64-pc-linux-gnuoldld”:机器“x86_64-pc”无法识别
配置:错误:/bin/sh ./config.sub x86_64-pc-linux-gnuoldld 失败

它似乎不支持编译为 64 位 Linux 应用程序。所以我有几个问题:

  1. 是否可以设置一些标志来将应用程序编译为 32 位并能够在我的 64 位操作系统上运行它?
  2. 是否可以更新配置脚本以支持 64 位 Linux?如果是这样,我是否也会在 .c 文件中进行一些严重的代码更改?
  3. 我注意到我网络上的一台 64 位 RHEL6 机器安装了该实用程序,并以相同的版本号 (1.2a3) 运行。我可以以某种方式下载用于构建它的源代码吗?如有必要,我可以访问 RHN。
4

3 回答 3

2

是否可以设置一些标志来将应用程序编译为 32 位并能够在我的 64 位操作系统上运行它?

是的。-m32是选项。

是否可以更新配置脚本以支持 64 位 Linux?如果是这样,我是否也会在 .c 文件中进行一些严重的代码更改?

您必须进行一些代码更改才能使纯 32 位应用程序在 64 位上运行。这是一个讨论将代码从 32 位移植到 64 位的链接。

对不起,我不知道你第三个问题的答案。

希望我提供的小信息能在某种程度上有所帮助。

于 2012-06-05T14:58:19.623 回答
2

您误解了configure脚本告诉您的内容。该解决方案与 CPU 位数无关。

错误归结为 的版本太旧config.guess,包创建者使用libtoolize. 要修复它,您需要libtool安装,然后说:

$ libtoolize --force

您会发现它configure现在可以运行了,因为用适合您系统libtoolize的版本覆盖了 tarball 版本。config.guess

您可能会遇到另一个问题,即“丢失”bpf.h文件。只需编辑tcpslice.c和更改这一行:

#include <net/bpf.h>

至:

#include <pcap-bpf.h>

通过这两项更改,我必须tcpslice在我的 64 位 CentOS 5 机器上进行构建。

于 2012-06-07T12:11:03.367 回答
0

安装以下软件包:

 $apt-get install ia32-libs.

对于 rhel 它的不同:

看看这个问题的答案:

CentOS 64 位坏 ELF 解释器

于 2012-06-05T15:09:00.257 回答