我正在尝试编译一个名为tcpslice的小工具。这是典型的GNU C应用程序。当我运行./configure
时,输出结果如下:
checking build system type... Invalid configuration `x86_64-pc-linux-gnuoldld': machine `x86_64-pc' not recognized configure: error: /bin/sh ./config.sub x86_64-pc-linux-gnuoldld failed
它似乎不支持编译为64位Linux应用程序。所以我有几个问题:
答案 0 :(得分:2)
是否可以设置一些标志来将应用程序编译为32位并且能够在我的64位操作系统上运行它?
是。 -m32是选项。
是否可以更新configure脚本以支持64位Linux?如果是这样,我还会在.c文件中进行一些严格的代码更改吗?
您必须进行一些代码更改才能使纯32位应用程序在64位上运行。这是一个link,讨论将代码从32位移植到64位。
对不起,我不知道第3个问题的答案。
希望我提供的小信息在某种程度上有所帮助。
答案 1 :(得分:2)
你误解了configure
脚本告诉你的内容。该解决方案与CPU位数无关。
错误归结为config.guess
的过旧版本,包创建者使用libtoolize
生成该版本。要解决此问题,您需要安装libtool
,然后说:
$ libtoolize --force
您会发现configure
现在正在运行,因为libtoolize
使用适合您系统的config.guess
覆盖了bpf.h
的tarball版本。
您可能遇到另一个问题,即“遗失”tcpslice.c
文件。只需修改#include <net/bpf.h>
并更改此行:
#include <pcap-bpf.h>
为:
tcpslice
通过这两项更改,我得到了{{1}}来构建我的64位CentOS 5盒。
答案 2 :(得分:0)