ライブラリのインストール

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
chop.chop
記事: 36
登録日時: 4年前

ライブラリのインストール

#1

投稿記事 by chop.chop » 4年前

いつもお世話になっております。

本日はとあるライブラリをインストールしようとしたところ、前提となるライブラリも揃っているはずなのにインストール出来ない、ということについてご助力をいただこうと思っています。

件のライブラリがこちら。
http://www.cipher.risk.tsukuba.ac.jp/tepla/index.html

筑波大学が公開している暗号プリミティブ用のライブラリです。

インストールのタブで書いているように、前提として多倍長演算用のgmpとopensslが必要とのことで、当方は
sudo apt-get install openssl
を実行しました。

gmpは既にインストールしていた(普通にライブラリとして使っている)ので問題無いはず、と思い

ダウンロードしてきてファイルを
tar zxvf tepla-1.0.tar.gz
で解答し、解凍して出来たディレクトリに潜り込んで
./configure
コマンドを実行したところ

-----------------------------------------------------------------------------
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking whether make sets $(MAKE)... yes
checking for main in -lgmp... yes
checking how to run the C preprocessor... gcc -E
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking gmp.h usability... yes
checking gmp.h presence... yes
checking for gmp.h... yes
checking for pkg-config... /usr/bin/pkg-config
checking for openssl/ssl.h in /usr/local/ssl... no
checking for openssl/ssl.h in /usr/lib/ssl... no
checking for openssl/ssl.h in /usr/ssl... no
checking for openssl/ssl.h in /usr/pkg... no
checking for openssl/ssl.h in /usr/local... no
checking for openssl/ssl.h in /usr... no
checking whether compiling and linking against OpenSSL works... no
configure: error: "Test for library openssl failed"
-----------------------------------------------------------------------------

こんなんが出ました。

プロンプトで
openssl version
を実行しても
OpenSSL 1.0.1k 8 Jan 2015
とちゃんとインストールされていることが確認出来ます。

これもうわかんねぇなぁ……

どうかご協力お願いします。

アバター
みけCAT
記事: 6214
登録日時: 8年前
住所: 千葉県
連絡を取る:

Re: ライブラリのインストール

#2

投稿記事 by みけCAT » 4年前

とりあえず

コード:

sudo apt-get install libssl-dev
を試してみてください。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

chop.chop
記事: 36
登録日時: 4年前

Re: ライブラリのインストール

#3

投稿記事 by chop.chop » 4年前

みけCATさんいつもありがとうございます。

教えて頂いたコマンドを実行した所無事./configureが通るようになりました。


ですが、その後、tepla-1.0の中にあるINSTALLの通りに
make
make check
を実行してインストールし終えたと思ったので、tepla-1.0内にあるsampleを移動し、中のsample.cを以下のコマンドでコンパイルしようとしました

gcc -o sample sample.c -I /home/b124694/Crypt/exp/tepla-1.0/include

-Iの後はヘッダファイルが入っているディレクトリを指定しています。
しかしこのようななものが出力されます。

-----------------------------------------------------------------------------
/tmp/ccn96P2a.o: 関数 `main' 内:
speed.c:(.text+0x2b): `pairing_init' に対する定義されていない参照です
speed.c:(.text+0x48): `point_init' に対する定義されていない参照です
speed.c:(.text+0x65): `point_init' に対する定義されていない参照です
speed.c:(.text+0x85): `point_init' に対する定義されていない参照です
speed.c:(.text+0xa5): `point_init' に対する定義されていない参照です
speed.c:(.text+0xc5): `element_init' に対する定義されていない参照です
speed.c:(.text+0xe5): `element_init' に対する定義されていない参照です
speed.c:(.text+0x105): `element_init' に対する定義されていない参照です
speed.c:(.text+0x114): `__gmpz_init' に対する定義されていない参照です
speed.c:(.text+0x123): `__gmpz_init' に対する定義されていない参照です
speed.c:(.text+0x132): `__gmp_randinit_default' に対する定義されていない参照です
speed.c:(.text+0x141): `pairing_get_order' に対する定義されていない参照です
speed.c:(.text+0x156): `__gmpz_set' に対する定義されていない参照です
speed.c:(.text+0x17f): `point_random' に対する定義されていない参照です
speed.c:(.text+0x19f): `__gmpz_urandomm' に対する定義されていない参照です
speed.c:(.text+0x1cb): `point_mul' に対する定義されていない参照です
speed.c:(.text+0x26e): `point_random' に対する定義されていない参照です
speed.c:(.text+0x28e): `__gmpz_urandomm' に対する定義されていない参照です
speed.c:(.text+0x2ba): `point_mul' に対する定義されていない参照です
speed.c:(.text+0x35a): `point_random' に対する定義されていない参照です
speed.c:(.text+0x369): `point_random' に対する定義されていない参照です
speed.c:(.text+0x399): `pairing_map' に対する定義されていない参照です
speed.c:(.text+0x43c): `element_random' に対する定義されていない参照です
speed.c:(.text+0x45c): `__gmpz_urandomm' に対する定義されていない参照です
speed.c:(.text+0x488): `element_pow' に対する定義されていない参照です
speed.c:(.text+0x549): `point_map_to_point' に対する定義されていない参照です
speed.c:(.text+0x606): `point_map_to_point' に対する定義されていない参照です
speed.c:(.text+0x68b): `element_clear' に対する定義されていない参照です
speed.c:(.text+0x69a): `element_clear' に対する定義されていない参照です
speed.c:(.text+0x6a9): `element_clear' に対する定義されていない参照です
speed.c:(.text+0x6b8): `point_clear' に対する定義されていない参照です
speed.c:(.text+0x6c7): `point_clear' に対する定義されていない参照です
speed.c:(.text+0x6d6): `point_clear' に対する定義されていない参照です
speed.c:(.text+0x6e5): `point_clear' に対する定義されていない参照です
speed.c:(.text+0x6f4): `__gmpz_clear' に対する定義されていない参照です
speed.c:(.text+0x703): `__gmpz_clear' に対する定義されていない参照です
speed.c:(.text+0x712): `__gmp_randclear' に対する定義されていない参照です
speed.c:(.text+0x721): `pairing_clear' に対する定義されていない参照です
-----------------------------------------------------------------------------

あれ?ライブラリのインストールは終わっているはずなのに…と思い、試しにライブラリのヘッダだけインクルードしたソースを上と同じディレクトリ指定でコンパイルした所、こちらは上手く行きました。
普通、同梱されているサンプルコードがこのような挙動になるのでしょうか?
正直な所、まだライブラリの中身を把握していないのですが、"~"に対する定義されていない参照です、の"~"には、このライブラリが提供している関数名が入ってるのだと思います。
これではせっかくインストールしたのにも関わらず、目的の関数が使えないことになってしまいわないでしょうか?


あと一つ、-Iによるディレクトリの指定も煩わしいので、これもまたtepla-1.0に合ったINSTALLを参照して
./configure --prefix==/usr/include
として/usr/include内にインストール場所を変更しようとしましたが、-Iによる指定無しでは今度はコンパイル出来なくなりました。
自分のやり方が間違っているのかどうかわからい状態です。

どうかお助けお願いします。

アバター
みけCAT
記事: 6214
登録日時: 8年前
住所: 千葉県
連絡を取る:

Re: ライブラリのインストール

#4

投稿記事 by みけCAT » 4年前

chop.chop さんが書きました:正直な所、まだライブラリの中身を把握していないのですが、"~"に対する定義されていない参照です、の"~"には、このライブラリが提供している関数名が入ってるのだと思います。
これではせっかくインストールしたのにも関わらず、目的の関数が使えないことになってしまいわないでしょうか?
sample/Makefile.smpを参考に、コンパイルのコマンドの最後に-ltepla -lcrypto -lgmpを追加してみてください。
chop.chop さんが書きました:あと一つ、-Iによるディレクトリの指定も煩わしいので、これもまたtepla-1.0に合ったINSTALLを参照して
./configure --prefix==/usr/include
として/usr/include内にインストール場所を変更しようとしましたが、-Iによる指定無しでは今度はコンパイル出来なくなりました。
自分のやり方が間違っているのかどうかわからい状態です。
  • =が多いようです。
  • make、make installはしましたか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

chop.chop
記事: 36
登録日時: 4年前

Re: ライブラリのインストール

#5

投稿記事 by chop.chop » 4年前

>>みけCATさん

返信ありがとうございます。

言われたようにライブラリを使うときのオプションをつけると、無事コンパイルが出来ました。

また、/usr/include/以下にヘッダファイルをインストールすることも、無事指摘の通りmakeし、make installをすると出来ました!


これでオプションにライブラリをつけるだけで普通のプログラムと同じようにコンパイルが出来るような環境が構成できました

本当にいつもありがとうございます。助かりました!


追記:今回の件で、自分が如何に端末での操作に不勉強か思い知りました。これは弄ってるうちにわかるもんなんでしょうか…?反省です。

閉鎖

“C言語何でも質問掲示板” へ戻る