带openssl1.1.1g的libcurl7.71.1多平台编译

项目路径

https://download.****.net/download/weixin_42206314/12746501

前期准备

安装

ActivePerl-5.24.2.2403-MSWin32-x86-64int-403863.exe。这个版本是必须的。

android-ndk-r16b。(r10e以上都可以,不过最好用这个,因为工程中的脚本文件引用的这个ndk)

VS2015(必须是这个,不能是VS2019

windows平台

打开VS2015 x64 本机工具命令提示符,

带openssl1.1.1g的libcurl7.71.1多平台编译

进入到openssl的目录,

curl_build/curl/build/openssl-1.1.1g

带openssl1.1.1g的libcurl7.71.1多平台编译

带openssl1.1.1g的libcurl7.71.1多平台编译

输入命令

perl Configure no-asm VC-WIN64A --release --prefix=D:\Tools\curl_build\curl\build\openssl-1.1.1\build --openssldir=D:\Tools\curl_build\curl\build\openssl-1.1.1g\build

带openssl1.1.1g的libcurl7.71.1多平台编译

回车后,出现如下界面

带openssl1.1.1g的libcurl7.71.1多平台编译

结束后输入nmake

结束后输入nmake test

结束后输入nmake install

正常以上三条指令应该全部正常完成。然后就可以关闭窗口了。

打开文件夹curl_build/curl/build/curl-7.71.1

建立deps文件夹,在里面创建binincludelib三个文件夹

将编译openssl生成的库(libssl.lib,libcrypto.lib)拷贝到lib下,将opensslinclude拷贝到include

打开工程目录解决方案curl-all.sln

svn://10.2.6.19/Project_L/src/Tools/curl_build/curl/build/curl-7.71.1/projects/Windows/VC14/curl-all.sln

打开libcurl属性页,在配置中选择DLL Release - DLL OpenSSL

配置属性->常规->目标平台版本选择为10.0.14393.0(根据你本机系统选择)

配置属性->链接器->输入->附加依赖项,将libeay32.lib和ssleay32.lib分别改成libssl.lib,libcrypto.lib

配置属性->C/C++->常规->附加包含目录,增加..\..\..\..\deps\include

配置属性->链接器->常规->附加库目录,增加..\..\..\..\deps\lib

编译libcurl,上面改的是配置属性,编译时也要选择对应的配置才可以编译

带openssl1.1.1g的libcurl7.71.1多平台编译

最后生成了libcurl.dll(我是这个路径D:\libcurl\curl-7.71.1\curl-7.71.1\build\Win64\VC14\DLL Release - DLL OpenSSL)

Mac平台

cd openssl-1.1.1g(openssl的项目目录)

mkdir out

./Configure darwin64-x86_64-cc no-shared  --prefix=`pwd`/out

make

make install

 

cd curl-7.71.1

autoconf # 出问题尝试请尝试 autoreconf -if

mkdir out

touch build_macOS.sh

chmod +x build_macOS.sh

 

./build_macOS.sh

make

make install

 

build_macOS.sh

#!/bin/sh

# $DIR 替换为openssl克隆的目录

export CPPFLAGS="-I$DIR/openssl/out/include"

export LDFLAGS="-L$DIR/openssl/out/lib"

./configure   --prefix=`pwd`/out

 

安卓平台

先要安装android-ndk-r16b,然后在msys64中用如下命令运行

Tools\curl_build\curl\build\build_for_android.sh即可。

./build_for_android.sh /d/android-ndk-r16b /d/android-ndk-r16b 21 x86

其中前两个参数,都填ndk的绝对路径。第三个参数固定21,最后一个参数填写x86armarm64三个参数。