2011-08-03 8 views
2

私たちは古いPerlアプリケーションを持っています。最近、64ビットのUbuntuを実行する新しいサーバーに移行しました。 古いアプリケーションでは、パック/アンパック関数とビット単位の演算が使用され、ビット単位の演算では32ビットではなく64ビットの整数が返されるため、失敗します。32ビットモードでPerlを動作させる

perlを32ビットモードにする方法はありますか? そうでなければ、64ビットマシンに32ビットperlをインストールする方法はありますか?

ありがとうございます!

答えて

1

プロセスは32ビットまたは64ビットです。 32ビットモードでは64ビットプロセスは実行されません。 32ビットパッケージをインストールする必要があります。

+0

そうではありません。オペレータがどのように行動するかは、プロセスの「ビット(bitness)」の関数である必要はありません。 – ikegami

+1

@ikegami質問の「32ビットモード」の部分を32ビットプロセスとして実行することを意味しました。しかし、私は別の解釈を見ることができます。あなたはおそらくそれがOPの意味であることは間違いありません。 –

+0

マシンは64ビットで、64ビットバージョンのUbuntuを使用しています。 デフォルトでは、64ビットperlをインストールしました(少なくとも内部的にPerlは整数を64ビットとして扱います) –

3
perlを32ビットモードにする方法はありますか?

いいえ、適切な(携帯可能な)パック/アンパックパターンを使用して、ビットが変わると適切な場合は​​を使用することに切り替えることができます。

もしそうでなければ、64ビットマシンに32ビットperlをインストールする方法はありますか? INSTALLから

ネイティブ64ビットシステムが-Duse64bitintも-Duse64bitallどちらを必要としています。これらのシステムでは、デフォルトのコンパイルモードになっている可能性があります。現在のところ、configureプロセスにuse64bitallオプションを指定しないと32bit perlをビルドできないという保証はありません。 -Duse32bit *オプションの実装は、将来のリリースのperlで計画されています。

したがって、答えは多分ですが、おそらくそうではありません。

+0

はい、私はコードを変更することができます...しかし、アプリケーションはかなり大きく、おそらくコードを変更する必要があるすべての場所を見つけるのに多くの時間がかかるでしょう。それから、私は何かが恋しくなることはいつでもあり得ます。 だから、私は単純な選択肢を探していた。たぶんPerlコマンドラインスイッチやPerlコマンドを使ってPerlを実行しているかもしれません... 他に何も問題がなければ、私はソースコードを変更する必要があります。 –

+1

@ user610060、それはあなたがそれをどれだけ必要としているかは実際問題ではありません。それはまだ存在しません。唯一の選択肢は、Perlの32ビットビルドを使用することです。 – ikegami

1

パッケージ名の末尾にi386という文字を付けて、32ビットパッケージをインストールできるようです。ライブラリをインストールするときは、少なくともこれが私のために働いていました。

$ sudoをlibelf1をインストールapt-getを:i386の

これは非ライブラリで動作する場合はおそらく、ファイル名とパス競合が存在することになるように私は、知りません。ライブラリでは、32ビットと64ビットのライブラリがパッケージ化され、別々のディレクトリに分類されます。

関連する問題