一、windows下使用vs2010编译支持https的curl
1、编译openssl库
1.1、https依赖ssl,从github下载openssl源码,这里下载的是openssl-1.0.2u版本,地址https://github.com/openssl/openssl/tree/OpenSSL_1_0_2u,下载解压后可以打开INSTALL.W32进行参考。
1.2、openssl编译依赖perl,需要先下载ActivePerl,可以从官网上下(The Perl Programming Language - www.perl.org),不过好像是在线安装,也可以下载安装离线版。
1.3、下载nasm,官网http://www.nasm.us/,安装后确认nasm.exe在电脑环境变量里,使用汇编编译可以提高openssl效率,不过也可以不安装nasm,直接使用vc编译。
1.4、新建两个文件夹,E:\code\openssl-1.0.2u-bin\debug,E:\code\openssl-1.0.2u-bin\release
打开Visual Studio Command Prompt (2010),进入到openssl源码目录,依次执行
1.4.1)perl Configure VC-WIN32 --prefix=E:\code\openssl-1.0.2u-bin\release
1.4.2)ms\do_nasm
1.4.3)nmake -f ms\ntdll.mak
1.4.4)nmake -f ms\ntdll.mak install
顺利的话,然后就可以在E:\code\openssl-1.0.2u-bin\release\bin看到生成的libeay32.dll、ssleay32.dll等文件了
说明:1.4.4.1)如果需要编译debug版,1.4.1执行
perl Configure debug-VC-WIN32 --prefix=E:\code\openssl-1.0.2u-bin\debug
1.4.4.1)如果不想用nasm编译汇编,1.4.1&1.4.2执行
perl Configure VC-WIN32 no-asm --prefix=perl Configure VC-WIN32 --prefix=E:\code\openssl-1.0.2u-bin\release
ms\do_ms
3)如果需要编译静态库版,1.4.3&1.4.4里的ntdll.mak换成nt.mak
2、编译curl
2.1、从https://github.com/curl/curl下载源码,我下载的是curl 7.86.1版本
2.2、本文用到了cmake编译,如果没有就下载一个吧,跨平台解决方案生成和编译的好工具。
2.3、打开cmd,进入到curl源码目录,依次执行
mkdir build
cd build
cmake ../ -G "Visual Studio 10 2010" -DCURL_USE_OPENSSL=ON -DCURL_ENABLE_SSL=ON -DOPENSSL_ROOT_DIR=E:\code\openssl-1.0.2u-bin\debug -DBUILD_TESTING=OFF
接着可以看到build下生成的vs解决方案,使用vs接着编译即可,如果想生成release版,需要把OPENSSL_ROOT_DIR也改成release版
3、测试
第二步生成成功后,打开cmd,切换到curl源码\build\src\Debug目录,分别执行
curl.exe http://www.baidu.com -i
curl.exe https://www.baidu.com -i -k
查看返回的网页内容,其中-k表示关闭ssl证书认证
二、linux下在3a5000编译支持https的curl
1、编译openssl库
1.1、https依赖ssl,从github或openssl官网,这里下载的是openssl-1.1.1w版本(上面的windows是好早以前写的),地址https://www.openssl.org/source/old/1.1.1/openssl-1.1.1w.tar.gz,解压
1.2、在openssl-1.1.1w外创建一openssl-build目录,进入该目录,依次执行
test@test-PC:~/code/openssl-build$ ../openssl-1.1.1w/config --prefix=/home/test/code/thirdparty/openssl-1.1.1w/shared
test@test-PC:~/code/openssl-build$ make -j4
test@test-PC:~/code/openssl-build$ make install
2、编译curl
2.1、从https://github.com/curl/curl下载源码,我下载的是curl 7.60.0版本,解压
2.2、进入源码目录,执行configure
./configure --with-ssl=/home/test/code/thirdparty/openssl-1.1.1w/shared --prefix=/home/test/code/thirdparty/curl-7.61.0
通过configure的结果确认是否成功开启openssl
2.3.1、通过cmake编译
2.3.1.1、编译动态库
test@test-PC:~/code/curl-7.61.0$ mkdir buildrelease
test@test-PC:~/code/curl-7.61.0$ cd buildrelease
test@test-PC:~/code/curl-7.61.0/buildrelease$ cmake ../ -DCMAKE_BUILD_TYPE=Release -DCMAKE_USE_OPENSSL=ON -DOPENSSL_ROOT_DIR=/home/test/code/thirdparty/openssl-1.1.1w/shared -DBUILD_TESTING=OFF -DCURL_STATICLIB=OFF
test@test-PC:~/code/curl-7.61.0$ make -j4
2.3.1.2、编译静态库
test@test-PC:~/code/curl-7.61.0$ mkdir buildreleasestatic
test@test-PC:~/code/curl-7.61.0$ cd buildreleasestatic
test@test-PC:~/code/curl-7.61.0/buildreleasestatic$ cmake ../ -DCMAKE_BUILD_TYPE=Release -DCMAKE_USE_OPENSSL=ON -DOPENSSL_ROOT_DIR=/home/test/code/thirdparty/openssl-1.1.1w/shared -DBUILD_TESTING=OFF -DCURL_STATICLIB=ON
test@test-PC:~/code/curl-7.61.0$ make -j4
至此完成
2.3.2、通过makefile编译
test@test-PC:~/code/curl-7.61.0$ make -j4
test@test-PC:~/code/curl-7.61.0$ make install
参考:https://blog.csdn.net/delphiwcdj/article/details/23348079
https://blog.csdn.net/haohaohaihuai/article/details/103968381
3、测试
CMakeLists.txt
cmake_minimum_required(VERSION 3.0.0)
project(untitled1 VERSION 0.1 LANGUAGES CXX)
include_directories(
/home/test/code/curl-7.61.0/include/curl
)
add_executable(${PROJECT_NAME} "main.cpp")
target_link_libraries(${PROJECT_NAME}
/home/test/code/curl-7.61.0/buildrelease/lib/libcurl.so
)
main.cpp
//#include <sys/socket.h>
#include "curl.h"
int main(int argc, char *argv[])
{
CURL *curl = curl_easy_init();
if(curl) {
CURLcode res;
curl_easy_setopt(curl, CURLOPT_URL, "https://baidu.com");
//curl_easy_setopt(curl, CURLOPT_URL, "http://baidu.com");
res = curl_easy_perform(curl);
curl_easy_cleanup(curl);
}
return 0;
}