libcvc3.so.3ファイルについて入手方法、または代用についてご存知の方はいらっしゃいませんか?


js-symbolic-executorという既製品(フリー)の環境構築をを行なっています。

==質問内容==
libcvc3.so.3の入手方法についてご存知の方はいらっしゃいませんか?
libcvc3.so.5やlibcvc3.so.2などで代用は可能でしょうか?


==質問の経緯==
補足に要点をまとめたものを記述させて頂きます。

(詳細な経緯は:http://ruzxa.hatenablog.com/entry/2014/11/22/014638より。あまり纏まっておらず申し訳ありません。)

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2014/11/22 03:27:59
  • 終了:2014/11/23 19:36:10
id:ruzxa

質問者から

ruzxa2014/11/22 15:06:31

make実行時に下記のエラーが出ました。

make終了間際のログ**


Unpacking parser
Unpacking translator
Unpacking vcl
Unpacking c_interface
cat UNPACKED | xargs g++ -shared -m64 -fPIC  \
    -Wl,-soname,libcvc3.so.3 -o '/mnt/sharefolder/js-symbolic-executor/cvc3/lib/x86_64-linux-gnu/libcvc3.so.3.0.0' `` -lgmp 
/sbin/ldconfig -nv /mnt/sharefolder/js-symbolic-executor/cvc3/lib/x86_64-linux-gnu
/mnt/sharefolder/js-symbolic-executor/cvc3/lib/x86_64-linux-gnu:
	<span style="color: #cc0000">libcvc3.so.3 -> libcvc3.so.3.0.0/sbin/ldconfig.real: /mnt/sharefolder/js-symbolic-executor/cvc3/lib/x86_64-linux-gnu/libcvc3.so.3 から libcvc3.so.3.0.0 へリンクできません</span>
 (スキップされました)
ln -sf libcvc3.so.3.0.0 /mnt/sharefolder/js-symbolic-executor/cvc3/lib/x86_64-linux-gnu/libcvc3.so.3.0
<span style="color: #cc0000">ln: シンボリックリンク `/mnt/sharefolder/js-symbolic-executor/cvc3/lib/x86_64-linux-gnu/libcvc3.so.3.0' の作成に失敗しました: 読み込み専用ファイルシステムです</span>
<span style="color: #cc0000">make[2]: *** [/mnt/sharefolder/js-symbolic-executor/cvc3/lib/x86_64-linux-gnu/libcvc3.so.3.0.0] エラー 1
</span>
make[2]: ディレクトリ `/mnt/sharefolder/js-symbolic-executor/cvc3/src' から出ます
make[1]: *** [build] エラー 2
make[1]: ディレクトリ `/mnt/sharefolder/js-symbolic-executor/cvc3/src' から出ます
make: *** [build] エラー 2


libcvc3.so.3からlibcvc3.so.3.0.0へリンクが出来ておらず、libcvc3.so.3ファイルがないのがそもそもの問題かと思われます。


名前の少々似たファイルとしては、libcvc3.soに関する記述があり(探しているのはlibcvc3.so.3ファイル)
cvc/java/READMEのヘルプ
http://js-symbolic-executor.googlecode.com/svn/trunk/cvc3/java/READMEより抜粋

3.4 Installation
----------------

"make install" copies libcvc3jni.so into the same directory as
libcvc3.so (by default, /usr/local/lib) and the Java library into
the directory specified by javadir (by default, /usr/local/java).

そこで上記より、js-symbolic-executoe既成品の中や、/usr/lib/bin、JAVA_HOME(jdk1.8.0_40)内を探したのですが見つかりませんでした。
また、windows上のjdkにおいてもJdk 1.9.0,1.8_25,1.8.0_20にはありませんでした。

ネット上にはlibcvc3.so.2やlibcvc3.so.5などがあったり、
apt-getコマンドにて
maru@marU:/$ sudo apt-get install libcvc3-
libcvc3-5 libcvc3-5-java libcvc3-5-jni libcvc3-dev
と出るなど似たような名前のファイルは公開されており、ネット上から拾ってくるような種類のものに感じています。

ベストアンサー

id:a-kuma3 No.2

a-kuma3回答回数4548ベストアンサー獲得回数18972014/11/23 12:55:00

分かりませぬ。
とりあえず、ヒントになればと思って、分かったことをずらずらと書きます。

cvc3 の make が失敗する理由

libcvc3.so.3からlibcvc3.so.3.0.0へリンクが出来ておらず、libcvc3.so.3ファイルがないのがそもそもの問題かと思われます。

だいたいその通りだと思います。
ldconfig は libcvc3.so.3.0.0 から libcvc3.so.3 を作ろうとしているし、ln は libcvc3.so.3.0.0 から libcvc3.so.3.0 を作ろうとしています。
libcvc.so.3 がないから、ln に失敗しているわけではありません。

気になるのは、このメッセージ。

ln -sf libcvc3.so.3.0.0 /mnt/sharefolder/js-symbolic-executor/cvc3/lib/x86_64-linux-gnu/libcvc3.so.3.0
ln: シンボリックリンク `/mnt/sharefolder/js-symbolic-executor/cvc3/lib/x86_64-linux-gnu/libcvc3.so.3.0' の作成に失敗しました: 読み込み専用ファイルシステムです

ディレクトリ /mnt/sharefolder/js-symbolic-executor/cvc3/lib/x86_64-linux-gnu/ の権限ってどうなってます?
まさか、書き込み権限が無いとか?
make の途中で作られる(ぽい)ディレクトリだから、そんなはずはないかな、と思いつつも、メッセージを信じてみる。

libcvc3.so.3.0.0 の在処

http://www.cs.nyu.edu/acsys/cvc3/oldversions.html
↑に、過去のバージョンがありますが、
CVC3 2.4 → libcvc.so.4.0.0
CVC3 2.2 → libcvc.so.2.1.1
だと思うので、番号が飛んでますね。
cvc3/VERSION というファイルは、公開されているものだとバージョンが書かれているのですが、js-symbolic-executor に同梱されているファイルには日付が書かれています。
日付的には 2.3 くらいなのでしょうけれど、公開されてないのだと思います。

他のバージョンは使えない?

js-symbolic-executor の方でビルドを通すのが良いと思いますが、他のバージョンの libcvc3.so が使えないだろうか、ということについて。
CVC3 を作ってる人がどう考えているか分かりませんが、普通はライブラリって、下位互換を保つように作ります。少なくともインターフェースは。
もちろん機能を変更するケースはありますから、新しいライブラリを使うと動きが違ってる、ということはあります。
でも、普通は新しいインターフェースを増やすことがあっても、インターフェースを変えることは、まずやりません。

なので、最新の CVC3 2.4.1 (libcvc3.so.5) や、ひとつ前の CVC3 2.4 (libcvc3.so.4) では、動く可能性が高いと思います。

はてなブログに書いてある find のこと

maru@marU:/mnt/sharefolder/js-symbolic-executor/cvc3$ find -name libcvc3.so.3*
./lib/x86_64-linux-gnu/libcvc3.so.3.0.0

ファイルは見当たらず、エラーもまだわからない

Windows のコマンドと違って、* はシェルが展開します。
find を使うには、こうです。

$ find -name "libcvc3.so.3*"



魔法使いへの道のりは長いようです ><。

他3件のコメントを見る
id:ruzxa

遠回りはしてしまいましたが、エラーを読み解く自信の一切なかった自分が
頑張ればエラー読めるんだぞと実感できたとてもいい経験でした。
ありがとうございます!


なんとなく原因がわかったのでご報告させて頂きます。

svnは関係ありませんでした。

./cvc3/config.status実行時にoperation not permitted
というエラーが原因のようでした。

このファイルだけhttp://blog.popowa.com/2013/11/phpchmod-operation-not-permitted.htmlより
chown maru config.status としてしまえば、libcvc3.so.3などのファイルはできていました。
ちなみにconfig.status は事前にchmod 777としていたので実行されるはずでしたがどうにも違うみたいです。

config.statusだけではうまくいかなかったのでcvc3以下を
chown -R maru cvc3
としてあげたら、build.xmlを読んで手作業も必要でしたが入りました!

全ファイルのユーザーを変更してしまえばant一発でした。

2014/11/24 00:08:56
id:a-kuma3

メキメキという音が聞こえてきそう :-)

CVC3 は、情報が少なそうですし、一通り上手くいったら、はてなブログにでも敬意を残しておくと、後続のためになりそうに思います。

2014/11/24 00:46:16

その他の回答(1件)

id:ruzxa

質問者から

ruzxa2014/11/22 03:30:11

質問文を編集しました。詳細はこちら

id:tea_cup No.1

tea_cup回答回数1017ベストアンサー獲得回数1822014/11/22 06:11:58

 後半の質問は、答えられます。
 Linux共有ライブラリの簡単なまとめ - wagavulinの日記を読むと、soの後の数字が変わるとインタフェース非互換とあるので、http://www.cs.nyu.edu/acsys/cvc3-releases/current/ とかからファイルを持ってきても動かないでしょう。

id:ruzxa

Linuxで共有ライブラリ(*.so)

ライブラリを作るときは.c -> .o -> .soの順に作るが

-Wl,-soname=libhoge.so.1 -o libhoge.so.1.0 といったコマンドはmakeで見かけました。

呼び方 意味 例
soname lib + ライブラリ名 + .so + バージョン libhoge.so.1 
real name sonameにマイナー番号、リリース番号を付けたもの libhoge.so.1.0.0 
real nameに付くマイナー番号やリリース番号は互換性のある変更を行ったときに上げる。公開インターフェースは変えず、内部のバグフィックスのみなどのときである。また、関数の追加だけの場合も互換性は保たれる。

sonameに付くバージョンは、インターフェース非互換になったときに上げる。つまり、既存の関数の引数を変えた場合や、公開している構造体のメンバ変数を変えた場合などである(構造体の末尾に追加するだけなら互換らしい)。


libcvc3.so.3がどういった種類のファイルかということすら知らなかったのでとても勉強になります!
ご回答頂き、本当にありがとうございました。



==以下、個人的な思考です!==

maru@marU:/$ find -name libcvc3.so*
find: `./lost+found': 許可がありません
~省略~

./usr/lib/libcvc3.so

~省略~




/usrには、読み出し可能かつ共有可能なファイルを配置
/usr/lib以下はライブラリファイル(必須)


/libは
 Linuxでは早くからシェアドライブラリを使ったダイナミックリンク機能が提供されていました。シェアドライブラリは、実行時、必要になった時点で初めてHDからメモリに読み込まれます。そのイメージを保存しておくディレクトリが/libです。カーネルのブート時に必要なものと、/ファイルシステムにあるコマンド(/binや/sbin内のコマンド)を実行するのに必要なライブラリはここにあります。

 なお、FHS 2.2では複数の実行形式バイナリをサポートするシステムのために、/libという形式のディレクトリもオプションとして既定されています。

・今後
libcvc3.soファイルがあるならリンク元もあるはず?出てこない理由は不明だが、一端整理してみる。
/usr/lib以下にgccやsslなどがあるので、libcvc3.soファイルもどこかからもって来れるかも?そのようなライブラリの一般的にもってくる場所を調べる。
もう一度読み直してヒントがないか探る


または別のうまいやり方?を探す。(エラー無視?環境を新たに別のOSで構築?UBUNTUのOSファイルの中にあったりしないかなあ。。

2014/11/22 10:29:17
id:a-kuma3 No.2

a-kuma3回答回数4548ベストアンサー獲得回数18972014/11/23 12:55:00ここでベストアンサー

分かりませぬ。
とりあえず、ヒントになればと思って、分かったことをずらずらと書きます。

cvc3 の make が失敗する理由

libcvc3.so.3からlibcvc3.so.3.0.0へリンクが出来ておらず、libcvc3.so.3ファイルがないのがそもそもの問題かと思われます。

だいたいその通りだと思います。
ldconfig は libcvc3.so.3.0.0 から libcvc3.so.3 を作ろうとしているし、ln は libcvc3.so.3.0.0 から libcvc3.so.3.0 を作ろうとしています。
libcvc.so.3 がないから、ln に失敗しているわけではありません。

気になるのは、このメッセージ。

ln -sf libcvc3.so.3.0.0 /mnt/sharefolder/js-symbolic-executor/cvc3/lib/x86_64-linux-gnu/libcvc3.so.3.0
ln: シンボリックリンク `/mnt/sharefolder/js-symbolic-executor/cvc3/lib/x86_64-linux-gnu/libcvc3.so.3.0' の作成に失敗しました: 読み込み専用ファイルシステムです

ディレクトリ /mnt/sharefolder/js-symbolic-executor/cvc3/lib/x86_64-linux-gnu/ の権限ってどうなってます?
まさか、書き込み権限が無いとか?
make の途中で作られる(ぽい)ディレクトリだから、そんなはずはないかな、と思いつつも、メッセージを信じてみる。

libcvc3.so.3.0.0 の在処

http://www.cs.nyu.edu/acsys/cvc3/oldversions.html
↑に、過去のバージョンがありますが、
CVC3 2.4 → libcvc.so.4.0.0
CVC3 2.2 → libcvc.so.2.1.1
だと思うので、番号が飛んでますね。
cvc3/VERSION というファイルは、公開されているものだとバージョンが書かれているのですが、js-symbolic-executor に同梱されているファイルには日付が書かれています。
日付的には 2.3 くらいなのでしょうけれど、公開されてないのだと思います。

他のバージョンは使えない?

js-symbolic-executor の方でビルドを通すのが良いと思いますが、他のバージョンの libcvc3.so が使えないだろうか、ということについて。
CVC3 を作ってる人がどう考えているか分かりませんが、普通はライブラリって、下位互換を保つように作ります。少なくともインターフェースは。
もちろん機能を変更するケースはありますから、新しいライブラリを使うと動きが違ってる、ということはあります。
でも、普通は新しいインターフェースを増やすことがあっても、インターフェースを変えることは、まずやりません。

なので、最新の CVC3 2.4.1 (libcvc3.so.5) や、ひとつ前の CVC3 2.4 (libcvc3.so.4) では、動く可能性が高いと思います。

はてなブログに書いてある find のこと

maru@marU:/mnt/sharefolder/js-symbolic-executor/cvc3$ find -name libcvc3.so.3*
./lib/x86_64-linux-gnu/libcvc3.so.3.0.0

ファイルは見当たらず、エラーもまだわからない

Windows のコマンドと違って、* はシェルが展開します。
find を使うには、こうです。

$ find -name "libcvc3.so.3*"



魔法使いへの道のりは長いようです ><。

他3件のコメントを見る
id:ruzxa

遠回りはしてしまいましたが、エラーを読み解く自信の一切なかった自分が
頑張ればエラー読めるんだぞと実感できたとてもいい経験でした。
ありがとうございます!


なんとなく原因がわかったのでご報告させて頂きます。

svnは関係ありませんでした。

./cvc3/config.status実行時にoperation not permitted
というエラーが原因のようでした。

このファイルだけhttp://blog.popowa.com/2013/11/phpchmod-operation-not-permitted.htmlより
chown maru config.status としてしまえば、libcvc3.so.3などのファイルはできていました。
ちなみにconfig.status は事前にchmod 777としていたので実行されるはずでしたがどうにも違うみたいです。

config.statusだけではうまくいかなかったのでcvc3以下を
chown -R maru cvc3
としてあげたら、build.xmlを読んで手作業も必要でしたが入りました!

全ファイルのユーザーを変更してしまえばant一発でした。

2014/11/24 00:08:56
id:a-kuma3

メキメキという音が聞こえてきそう :-)

CVC3 は、情報が少なそうですし、一通り上手くいったら、はてなブログにでも敬意を残しておくと、後続のためになりそうに思います。

2014/11/24 00:46:16

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません