試行1、ライブラリへのバニラリンク
パッチを適用したバージョンのOpenSSLを使用しようとしています(DTLSの方が使いやすいです)。OpenSSLは
/usr/local/openssl-1.0.1c
./include/opensslサブフォルダーには、大量のヘッダーファイルがあります(私が想定しているとおり)。
lrwxrwxrwx 1 root root 22 Dec 25 05:49 aes.h -> ../../crypto/aes/aes.h
lrwxrwxrwx 1 root root 24 Dec 25 05:49 asn1.h -> ../../crypto/asn1/asn1.h
lrwxrwxrwx 1 root root 28 Dec 25 05:49 asn1_mac.h -> ../../crypto/asn1/asn1_mac.h
...
GCCはインクルードフォルダにリンクし、エラーが発生します-SSLが見つかりません。私は他の人とほぼ同じものを使用しています。これはOSX(10.6)では機能しますが、Ubuntuでは機能しません。
~$ gcc -L/usr/local/openssl-1.0.1c/include -lssl -lcrypto -o server server.c
server.c:20:25: fatal error: openssl/ssl.h: No such file or directory
compilation terminated.
試行2、/ usr/include内のライブラリへのシンボリックリンク
そこで、/ usr/includeにOpenSSLへのシンボリックリンクを作成してみます。
sudo ln -s /usr/local/openssl-1.0.1c/include/openssl /usr/include/openssl
コンパイルを再試行します。
~$ gcc -L/usr/local/openssl-1.0.1c/include -lssl -lcrypto -o server server.c
/usr/bin/ld: cannot find -lssl
/usr/bin/ld: cannot find -lcrypto
collect2: ld returned 1 exit status
make: *** [server] Error 1
最初の方法(つまり、シンボリックリンクがない)が機能しないのはなぜですか?権限?2番目の方法が機能しないのはなぜですか?なぜこれがOSXで機能するのですか?