尝试 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
为什么第一种方法(即没有符号链接)不起作用?权限?为什么第二种方法不起作用?为什么这在 OSX 上有效???