-1
リンクエラーの原因を理解しようとしています。この例は具体的ですが、原因は多分私が理解していない一般原則です。openssl/md5.hが "crypto"ではなく "ssl"とリンクする理由
this postから最小限の例を作りたかったのです。 Ubuntu 14.05.5。私はした:
$ apt-get install libssl-dev
$ opensll version
OpenSSL 1.0.1f 6 Jan 2014
$ echo $LD_LIBRARY_PATH
/usr/local:
$ gcc -I/usr/include/openssl -o test md5.c -L/usr/lib/x86_64-linux-gnu -lssl
/tmp/ccUSgfgs.o: In function `main':
md5.c:(.text+0x26): undefined reference to `MD5_Init'
md5.c:(.text+0x68): undefined reference to `MD5_Update'
md5.c:(.text+0xab): undefined reference to `MD5_Final'
collect2: error: ld returned 1 exit status
共通のリンクエラーをスローします。それらのシンボルに定義を見つけることはできません。ランダムな試みを通じて、私はこのビルドが見つかりました:
$ gcc -I/usr/include/openssl -o test md5.c -L/usr/lib/x86_64-linux-gnu -lcrypto
唯一の違いは、代わりに「-l SSL」の「暗号-l」です
なぜ1つのビルドと他のではないのですか?
[Cで文字列のmd5ハッシュを作成する方法](http://stackoverflow.com/q/7627723)を参照してください。 – jww