FreeBSD QandA 604
Q. Linux emulator (エミュレータ)を使って Linux バイナリを実行しようと
したのですが、うまく動きません。どうしたら良いでしょう?
A. いろいろな原因が考えられます。順に候補を挙げていきますので、
症状や自分の環境に合わせて、適宜対応して下さい。
1. can't load library 'libXp.so.6' のようなエラーが出る場合は、
対応する Linux 用のライブラリを Linux マシン等から入手して、
/compat/linux/lib/
の下に置いて下さい。
2. ./my-linux-elf-binary というバイナリを実行した時に、
% ./my-linux-elf-binary
ELF binary type not known
Abort
と、表示されるようでしたら、以下のようにして下さい。
% brandelf -t Linux ./my-linux-elf-binary
3. Segmentation fault を起こして動作しない場合は、環境変数
LD_LIBRARY_PATH が設定してないか確かめて下さい。もし
% echo $LD_LIBRARY_PATH
で何か表示されるようなら、
% unsetenv LD_LIBRARY_PATH
で、環境変数をクリアして下さい。
4. Acroread4 を使おうとしたけれど、Segmentation Violation Caught.
というウインドウがでてきて使えない場合は、X のリソース設定
ファイル (~/.Xresources や ~/.Xdefaults) に、
AcroRead*inputMethod: none
という行を追加してください。
あるいは、以下のような簡単なスクリプトを書き、ラッパとして使用する
方法もあります。
#!/bin/sh
# Wrapper Script for Linux Acrobat Reader
XMODIFIERS="@im=none"; export XMODIFIERS
acroread4
5. Applixware (TurboLinuxPro 3.0 および 4.2) について。
3.0 の場合:
メニューを日本語にしたい時は
% setenv AXLANG 17
として下さい。
4.2 の場合:
一応、動くようです。ただし、日本語の入力ができたという例は、
FreeBSD-users-jp ではないようです(1999年12月28日現在)。
詳しくは、[FreeBSD-users-jp 47668] と関連するスレッドを ご覧下さい。
6. hogehoge: error in loading shared libraries
:undefined symbol: __register_frame_info
というエラーが出る場合。
Linux 用の X server (XFCom_Rage128) などを Linux エミュレータで使用して
いる場合に出るようです。この場合は、
<URL:[BROKEN!] http://www.suse.de/en/support/xsuse/index.html>
から regframe.rpm を持ってきてインストールします。
% rpm2cpio regframe.rpm | cpio -ivd
で展開する事ができるので、できた libregframe.so を
/usr/local/lib にコピーして、/etc/ld.so.preload を新しく作り、
/usr/local/lib/libregframe.so
と書く事で、実行できるようになります。
間違い・追加情報を見付けた場合は、
修正案の投稿のしかた を読んだ上で、
QandA@jp.FreeBSD.org まで
お知らせください。