web-dev-qa-db-ja.com

GCCでOpenSSLを使用する方法

Opensslをgccプログラムで使用しようとしていますが、機能しません。

_g++ server.cpp /usr/lib/libssl.a -o server
_

_-l_オプションを使用した場合と同様に、エラーメッセージが表示されます。 opensslとリンクするには、コマンドラインで何を入力する必要がありますか?ファイル_/usr/lib/libssl.a_は存在しますが、それでもリンカーエラーno such function MD5() existsが発生します。

20
Jondo Zaro

表示されている正確なエラーを知らなければ、正確な解決策を提供することは困難です。これが私の最善の試みです。

提供された情報から、md5内のlibssl.a関数への参照が見つからないため、リンカーが失敗しているように見えます。この関数は実際にはlibcryptoにあると思うので、このライブラリも指定する必要があるかもしれません。

g++ server.cpp -L/usr/lib -lssl -lcrypto -o server

24
jschmier

あなたまたはothersは、この記事 developerWorks の記事が役立つ場合があります。

OpenSSLとC/C++を使い始めるために知っておく必要のあるほとんどの事項を説明しています。同じ手順のほとんどを実行していることがわかった場合は、何が必要かを確認するのに役立つことがあります。

幸運を。

11
will

EclipseでIDEプロジェクトのプロパティを選択-> c/c ++ビルド->設定gcc cリンカー(ツール設定から)->ライブラリ検索パスに追加(-L)

/ usr/lib -lssl -lcrypto

5
user3343214

ライブラリの場所は固定されていません。私の場合(Ubuntu 18.04)、. aファイルは_/usr/lib/x86_64-linux-gnu/_にあります。だからここに完全な手順があります:

1) ライブラリをインストール

_Sudo apt install libss-dev
_

2) インストールされているファイルを確認

_dpkg-query -L libssl-dev
_

3)gccフラグ-L(library directory) -l(library name)を変更します。たとえば、

_gcc XXX.c XXXXX.c -L/usr/lib/x86_64-linux-gnu/ -lcrypto -lssl
_
1
Alt Eisen

受け入れられた回答に加えて、AES-CCMのOpenSSLの例をコンパイルできませんでした。

https://github.com/openssl/openssl/blob/master/demos/evp/aesccm.c

それを機能させるには、さらに2つのことを追加する必要がありました。

  • ダイナミックリンクライブラリ:-ldl
  • POSIXスレッドサポートを使用するPThreadライブラリ:-pthread(-lpthreadを使用してライブラリを直接追加することは 非推奨
0
renzoe