尝试使用openssl的c代码,并在命令提示符下编译时出现此错误。
c:\openssl>gcc -lssl -lcrypto -o test test.c -IC:\openssl\include\
c:/mingw/bin/../lib/gcc/mingw32/4.8.1/../../../../mingw32/bin/ld.exe: cannot find -lssl
c:/mingw/bin/../lib/gcc/mingw32/4.8.1/../../../../mingw32/bin/ld.exe: cannot find -lcrypto
collect2.exe: error: ld returned 1 exit status
现在该怎么办,请帮忙。
编辑: 即使这些也没有帮助:
c:\openssl>gcc -o test test.c -lssl -lcrypto -Ic:\openssl\include\
c:\openssl>gcc -o test test.c -I c:\openssl\include\ -L c:\openssl\lib -lssl -lcrypto
c:\openssl>gcc -o test test.c -Lc:\openssl\lib -lssl -lcrypto -Ic:\openssl\include\
答案 0 :(得分:1)
首先,您需要使用mingw编译openssl,您链接到的二进制文件是使用Visual Studio编译的,并且已过期并包含安全漏洞。
0.9.8支持已经停止,所以我建议使用1.0.1 +。
安装ActivePerl并删除Stawberry Perl,因为它与openssl不兼容。
从https://openssl.org/source/下载最新的1.0.1源代码(openssl-1.0.1q.tar.gz)
在msys控制台中,在将openssl源解压缩到的目录中运行以下命令:
$ perl Configure mingw --prefix=/c/openssl
$ make depend
$ make
$ make install
然后运行编译命令:
gcc -o test test.c -Lc:\openssl\lib -lssl -lcrypto -Ic:\openssl\include\
编辑: 使用mingw在0.9.8上存在构建问题,因此使用1.0.1或更高版本并使用ActivePerl而不是Strawberry Perl。
答案 1 :(得分:0)
例如我做的不一样。
我从https://www.openssl.org/community/binaries.html下载了编译的二进制文件。
然后,只针对他们。使用-L将搜索目录添加到链接器(解释为here)。
最后我还是
g++ my_program.cpp -I"C:\Program Files (x86)\OpenSSL-Win32\include" -L"C:\Program Files (x86)\OpenSSL-Win32\lib\MinGW" -lssl -lcrypto
您似乎在C:/openssl/
中拥有它,因此(并有可能表述明显)对您的环境进行了必要的更改。