実行ファイルを実行すると
「cannot open shared object file: ~ – xxxxx.so (LoadError)」
や
「relocation error: symbol not found」
と、共有ライブラリやらシンボルが見つからないと怒られるときの対処方法。この事象は、
rpmパッケージを無理矢理インストールしたときや、
どこかの製品をインストールしたとき
に発生する可能性大。
とりあえず、lddコマンドで実行するコマンドが使用する共有ライブラリ(ダイナミックリンクライブラリ)の依存関係を調べる。
# ldd /usr/local/hoge/bin/hoge
hoge1.so => /usr/local/hoge/lib/hoge1.so (0x0000008000030000)
hoge2.so => /usr/local/hoge/lib/hoge2.so (0x0000008000148000)
ここで、
・右側に表示されたライブラリのパスに該当のファイルが存在している場合
→バージョン違いの共有ライブラリがキャッシュされている可能性(この時たぶんsymbolエラーになっているはず)
または共有ライブラリがキャッシュされていない(この時はたぶん見つからないエラー)
→下記の対処方法を参照
・左側に表示されたファイル名が右側のパスと異なるディレクトリにある
→共有ライブラリのあるディレクトリがライブラリキャッシュの対象となっていない
→下記の対処方法を参照
・左側に表示されたファイル名のファイルがどこにもない
→そもそも必要な共有ライブラリがインストールされていない
(rpm -i –force で無理矢理入れたな。もしや製品の前提条件読んでないな。)
→先に前提条件のパッケージを入れろ!
・対処方法
ライブラリ検索リストを確認。
該当の共有ライブラリが存在するディレクトリが登録されていなければ登録する。
# vi /etc/ld.so.conf
/usr/local/hoge/lib
共有ライブラリを更新(リンク再作成・キャッシュ)
# ldconfig
ちなみに、現在キャッシュおよびリンクされている共有ライブラリの一覧は
# ldconfig -l
で確認できる。
AIX 64bit化
AIXを64bit化する手順
1.パッケージの確認
# lslpp -L bos.64bit
# lslpp -L bos.mp64
2.リンク張替え
# ln -s /usr/lib/boot/unix_64 /unix
# ln -s /usr/lib/boot/unix_64 /usr/lib/boot/unix
3.ブートイメージ作成
# bosboot -a
4.リブート
# reboot