windows/linux下编译支持https的curl

7 篇文章 1 订阅
5 篇文章 0 订阅

一、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;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值