Re: AqKanji2Koe を ruby からロードでき ( No.1 ) |
- 日時: 2014/03/24 15:02
- 名前: 管理人
- Rubyは知らないのでなんともいえませんが、
ライブラリのロード時のエラーとなると、 AquesTalk2とAqKanji2Koe Linuxの違いとして、 後者は、依存ライブラリとして、libc.so.6のほかに、libgcc_s.so.1も使用している点くらいでしょうか。
|
Re: AqKanji2Koe を ruby からロードできない ( No.2 ) |
- 日時: 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 からロードできない ( No.3 ) |
- 日時: 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 からロードできない ( No.4 ) |
- 日時: 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 からロードできない ( No.5 ) |
- 日時: 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 からロードできない ( No.6 ) |
- 日時: 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
|