AquesTalk BBS
TOP > 記事閲覧
fld_nor.gif AqKanji2Koe を ruby からロードできない
投稿日 : 2014/03/16 14:23
投稿者 井上 清晃
参照先 https://gist.github.com/saronpasu/9578872
度々、失礼します。

井上 清晃(いのうえ きよてる)と言います。

AqKanji2Koe(linux 64bit)のライブラリを
ruby からロードしようとしたところ。
"can't load" となり、読み込みが行えませんでした。

なお、 AquesTalk2(linux 64bit)ライブラリは
同様の方法で ruby からロードでき、実行もできています。
AquesTalk2ライブラリを読み込むことができたのに。
AqKanji2Koeライブラリを読み込むことができなかったので。
ruby 側ではなく、ライブラリ側の問題ではないかと推測しています。

使用したテストコードをURLで記載しておきます。
↓AqKanji2Koe ロードに失敗したコード↓
https://gist.github.com/saronpasu/9578872

↓AquesTalk2 ロードと実行に成功したコード↓
https://gist.github.com/saronpasu/9565563

ご多忙かと存じますが。
ご対応のほど、よろしくお願いいたします。
編集 編集
件名 Re: AqKanji2Koe を ruby からロードできない
投稿日 : 2014/03/26 16:34
投稿者 井上 清晃
参照先 https://gist.github.com/saronpasu/9778347
早速の対応、ありがとうございます。

> AqKanji2Koeのdlloadの前に、libstdc++.so.6 もロードしてください。(ファイルパスは環境に応じて)
ex)
>
> dlload '/usr/lib/x86_64-linux-gnu/libstdc++.so.6'
> dlload 'libAqKanji2Koe.so.2.0'
>
> たぶんこれで良いかと・・・

はい。ご指摘頂いた対応方法で、ロードが行えることが確認できました。
ありがとうございました。

正常にロードできたコードを書いておきます。
https://gist.github.com/saronpasu/9778347
編集 編集
件名 Re: AqKanji2Koe を ruby からロードできない
投稿日 : 2014/03/26 15:26
投稿者 管理人
参照先
Undefinedの関数は、libgcc_sの関数ではなくて、libstdc++の関数でした。

AqKanji2Koeのdlloadの前に、libstdc++.so.6 もロードしてください。(ファイルパスは環境に応じて)
ex)

dlload '/usr/lib/x86_64-linux-gnu/libstdc++.so.6'
dlload 'libAqKanji2Koe.so.2.0'

たぶんこれで良いかと・・・

編集 編集
件名 Re: AqKanji2Koe を ruby からロードできない
投稿日 : 2014/03/25 15:26
投稿者 井上 清晃
参照先 https://gist.github.com/saronpasu/9741124
使っている Linux ディストリビューションは Ubuntu 13.10(64bit)です。


------------------------------
$ uname -a
Linux Ubuntu-Desktop 3.11.0-18-generic #32-Ubuntu SMP Tue Feb 18 21:11:14 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

$ lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 8
On-line CPU(s) list: 0-7
コアあたりのスレッド数:2
ソケットあたりのコア数:4
Socket(s): 1
NUMAノード: 1
ベンダーID: GenuineIntel
CPUファミリー: 6
モデル: 60
ステッピング: 3
CPU MHz: 800.000
BogoMIPS: 6186.15
仮想化: VT-x
L1d キャッシュ: 32K
L1i キャッシュ: 32K
L2 キャッシュ: 256K
L3 キャッシュ: 8192K
NUMA node0 CPU(s): 0-7
------------------------------

となります。
特別、古い環境というわけではないと思います。
度々、お手数をおかけしますがよろしくお願いいたします。
編集 編集
件名 Re: AqKanji2Koe を ruby からロードできない
投稿日 : 2014/03/25 15:19
投稿者 管理人
参照先
「ZTVN10__cxxabiv120__si_class_type_infoE」というシンボルは、AqKanj2Koeから直接呼び出していないので、libgcc_s.so.1ライブラリの環境依存の可能性がありますね。
この場合rubyでなくても、単にGCCでCのプログラムをリンクした場合にも同様のエラーが出るものと思います。

お使いのLinuxのディストリビューションおよびバージョンは何でしょう?

今のAqKanji2Koe Linuxは、CenOS6.5 64bit版でビルド、動作確認していますので、ちょっと古い環境ではリンクできないかもしれません。
編集 編集
件名 Re: AqKanji2Koe を ruby からロードできない
投稿日 : 2014/03/24 23:28
投稿者 井上 清晃
参照先 https://gist.github.com/saronpasu/9741124
ご返答ありがとうございます。

libgcc_s.so.1 に関しては、 Ruby からロードを行うこともできます。
Ruby 実行環境で、 libgcc_s.so.1 が認識できない状況ではないようです。

AqKanji2Koe をロード時に Ruby からデバッグ出力を行ったところ。次のようなエラーメッセージが出力されました。

---------------------

libAqKanji2Koe.so.2.0: undefined symbol:_ZTVN10__cxxabiv120__si_class_type_infoE

---------------------

Ruby内部からは、未定義のシンボルを呼び出されたようにデバッグ出力されています。
このデバッグメッセージの意味は理解できませんが。
もし、原因究明の一助となるのでしたら。
再度、ご対応のほど、お願いいたします。

念の為、Ruby2.1 にて。libgcc_s.so.1 がロードできたコードを掲載します。
https://gist.github.com/saronpasu/9741091

Ruby2.1 にて、 AqKanji2Koe を デバッグ出力でロードした際のコードを掲載します。
https://gist.github.com/saronpasu/9741124


ご多忙かと存じますが。
どうぞよろしくお願いいたします。
編集 編集
件名 Re: AqKanji2Koe を ruby からロードでき
投稿日 : 2014/03/24 15:02
投稿者 管理人
参照先
Rubyは知らないのでなんともいえませんが、

ライブラリのロード時のエラーとなると、
AquesTalk2とAqKanji2Koe Linuxの違いとして、
後者は、依存ライブラリとして、libc.so.6のほかに、libgcc_s.so.1も使用している点くらいでしょうか。
編集 編集
件名 スレッドをトップへソート
名前
URL
パスワード (自分の記事を再編集時に使用)
画像認証 (右画像の数字を入力) 投稿キー
コメント sml_cool.gifsml_sml.gifsml_yawn.gifsml_q.gifsml_big.gifsml_shm.gifsml_wink.gifsml_cry.gifsml_roll.gifsml_bonk.gif

- WEB PATIO -