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

configureスクリプトが伝えていることを誤解しています。解決策は、CPU のビット数とは関係ありません。

config.guessこのエラーは、パッケージ作成者が で生成したの古すぎるバージョンに帰着しlibtoolizeます。それを修正するには、インストールする必要がありますlibtool。次に、次のように言います。

$ libtoolize --force

の tarball バージョンがシステムに適したもので上書きされたconfigureため、これが実行されることがわかります。libtoolizeconfig.guess

「見つからない」bpf.hファイルという別の問題が発生する場合があります。この行を編集tcpslice.cして変更するだけです:

#include <net/bpf.h>

に:

#include <pcap-bpf.h>

これら 2 つの変更によりtcpslice、64 ビットの CentOS 5 ボックスでビルドすることができました。

于 2012-06-07T12:11:03.367 に答える
2

アプリケーションを 32 ビットとしてコンパイルし、64 ビット オペレーティング システムで実行できるようにフラグを設定することはできますか?

はい。-m32はオプションです。

構成スクリプトを更新して 64 ビット Linux をサポートすることはできますか? その場合、.c ファイルにも重大なコード変更を加える予定はありますか?

純粋な 32 ビット アプリケーションを 64 ビットで動作させるには、いくつかのコードを変更する必要があります。これは、32 ビットから 64 ビットへのコードの移植に関するリンクです。

すみません、3番目の質問の答えがわかりません。

私が提供する小さな情報が何らかの形で役立つことを願っています。

于 2012-06-05T14:58:19.623 に答える
0

次のパッケージをインストールします。

 $apt-get install ia32-libs.

rhel の場合、その違いは次のとおりです。

この質問への答えを見てください:

CentOS 64 ビットの不適切な ELF インタープリター

于 2012-06-05T15:09:00.257 に答える