libcurl+openssl库交叉编译

  1. 源码下载

    本人所下载的源码版本: openssl – 1.1.1j 、 libcurl – 7.76.1
    链接: libcurl7.76.1+openssl1.1.1j.zip

  • 下载openssl源码–选择当前稳定版本,本人选择的是1.1.1j
    https://www.openssl.org/source/
    在这里插入图片描述
  • 下载libcurl源码-- https://curl.se/download.html
    在这里插入图片描述

MacOS交叉编译

MacOS OpenSSL编译

进入解压后的目录,cmd执行命令
参数DEPLOYMENT_TARGET = 10.13 指的是所支持的最低系统版本号
使用shared 生成动态库 ,生成路径为 /usr/local/ssl

export ARCH=x86_64
export SDK=macosx
export DEPLOYMENT_TARGET=10.13 

export CFLAGS='-isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk -mmacosx-version-min=10.13'
./config shared --prefix=/usr/local/ssl
  • 执行命令 make
  • 执行命令sudo make install ,该命令需输入密码

MacOS Libcurl编译

  1. 进入解压后的目录执行命令
参数说明
默认同时编译静态库、动态库
--with-drawin-ssl 提取ssl
--with-ssl=/usr/local/ssl 链接的OpenSSL版本地址
--prefix=/usr/local/curl 生成的目录
–disable-ldap --disable-ldaps 禁用ladp ladps
--without-zlib 不使用zlib编译
export ARCH=x86_64
export SDK=macosx
export DEPLOYMENT_TARGET=10.13

export CFLAGS="-arch $ARCH -isysroot $(xcrun -sdk $SDK --show-sdk-path) -m$SDK-version-min=$DEPLOYMENT_TARGET"
./configure  --with-darwin-ssl --with-ssl=/usr/local/ssl --prefix=/usr/local/curl --without-zlib --disable-ldaps --disable-ldap 
  1. 执行命令 make

  2. 执行命令sudo make install ,该命令需输入密码

  3. 编译后的目录 在这里插入图片描述
    确认生成版本无误
    在这里插入图片描述
    拷贝动态库,如图所示
    在这里插入图片描述
    在这里插入图片描述

  4. 编译后的版本只适用于本机,其他电脑无法跑
    使用otool、install_name_tool 工具更改libcurl、openssl依赖库地址
    使用@loader_path 指当前目录下链接动态库
    例如在这里插入图片描述

  • 本身库使用指令
sudo install_name_tool -id  @loader_path/libcurl.4.dylib libcurl.4.dylib
  • 依赖库使用指令
sudo install_name_tool -change /usr/local/ssl/lib/libssl.1.1.dylib @loader_path/libssl.1.1.dylib libcurl.4.dylib
sudo install_name_tool -change /usr/local/ssl/lib/libcrypto.1.1.dylib @loader_path/libcrypto.1.1.dylib libcurl.4.dylib
  1. cmake项目链接动态库 (略)
    已编译好的动态库及include头文件
    library.zip

  2. 在编译及运行时拷贝至对应可执行目录下即可,否则会出现无法找到image的编译报错
    在这里插入图片描述

补充win交叉编译

win编译好的库下载链接

win编译OpenSSL (仅使用于源码1.1.0 及以上版本)

  1. 安装perl(使用默认安装即可)perl下载链接

  2. 安装NASM,并添加到环境变量 NASM下载链接
    例如 安装到 c:\Nasm 环境变量为
    PATH=%PATH%;“c:\Nasm”

  3. 根据所需安装的库是32位 还是 64位的选择不同 vs tool编译器。如本人选择安装64位的库 则使用如图所示编译器,否则使用x86的 , 务必使用管理员模式运行,否则install的时候无法创建目录及拷贝文件
    在这里插入图片描述
    前期工作准备完成

  4. 打开上图所示编译命令行,使环境变量生效
    PATH=%PATH%;“c:\Nasm”

  5. 使用cd指令打开 盘符

  6. 使用cd指令打开openssl 源码所在位置

  7. 在源码目录或其他目录创建install 时的生成目录文件夹 如创建OutDir

  8. 使用指令 生成makefile文件
    注意参数
    64位使用 VC-WIN64A, 32使用 VC-WIN32
    --prefix=生成目录

perl Configure VC-WIN64A  --prefix=C:\Users\Desktop\libsrc\openssl-1.1.1j\openssl-1.1.1j\OutDir
  1. 使用指令nmake clean 清理目录

  2. 使用指令 nmake 进行编译

  3. 在源码所在目录可以看见生成 libcrypto-1_1x64.dll 和 libssl-1_1-x64.dll

  4. 使用vstools 命令行使用指令dumpbin 检查对应生成的库版本,其版本信息 在 HEADER Section

dumpbin /headers libcrypto-1_1x64.dll
  1. 使用指令 nmake test 验证代码
  2. 使用指令 nmake install 安装到前面指定的生成文件夹

在这里插入图片描述
至此 OpenSSL 安装完成

win安装libcurl

  1. 打开源码所在位置,打开目录winbuild

  2. 打开README.md,查看编译指令 及 选项
    在这里插入图片描述

  3. 请根据实际开发需求选择相关编译选项

本人使用指令如下
mode=dll 生成动态库
WITH_DEVEL=C:\Users=\Desktop\libsrc\openssl-1.1.1j\openssl-1.1.1j\OutDir 指明开发路径,如ssl、zlib

SSL_PATH=C:\Users=\Desktop\libsrc\openssl-1.1.1j\openssl-1.1.1j\OutDir 指明使用的SSL库路径

DEBUG=no release版本
MACHINE=x64 生成64位
ENABLE_SSPI=no 禁用sspi

nmake /f MakeFile.vc mode=dll WITH_DEVEL=C:\Users=\Desktop\libsrc\openssl-1.1.1-1j\openssl-1.1.1j\OutDir WITH_SSL=dll SSL_PATH=C:\Users\Desktop\libsrc\openssl-1.1.1-1j\openssl-1.1.1j\OutDir DEBUG=no MACHINE=x64 ENABLE_SSPI=no
  1. 静候编译完成,打开源码根目录下的build 目录 ,发现已生成库
    在这里插入图片描述
    如上图所示,选择上图第一个文件夹并进入,发现生成好的动态库位于bin文件夹中 libcurl.dll
    在这里插入图片描述

  2. 拷贝OpenSSL 生成的动态库文件(位于所安装目录的bin文件夹中)到libcurl中进行测试
    在这里插入图片描述

  3. 查看curl版本 curl.exe -V 发现已支持 OpenSSL 访问 http/https
    在这里插入图片描述

  4. 至此,libcurl + openssl 交叉编译完成

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在VS2013中编译libcurl时,需要使用OpenSSL和zlib。libcurl是一个功能强大的开源网络,能够实现跨平台的HTTP、FTP、SMTP等协议的数据传输。 OpenSSL是一个开源的加密,提供了各种加密算法和安全协议的实现,可以用于SSL/TLS的加密和解密通信。在编译libcurl时,需要将OpenSSL的头文件和文件加入到VS2013的编译环境中。这样在编译libcurl时,可以使用OpenSSL提供的加密算法和安全协议进行网络通信的加密。 zlib是一个开源的数据压缩,可以实现对数据的高效压缩和解压。在编译libcurl时,需要将zlib的头文件和文件加入到VS2013的编译环境中。这样在编译libcurl时,可以使用zlib提供的数据压缩和解压功能,提高数据传输的效率。 在编译过程中,应首先确保已正确安装了OpenSSL和zlib,并设置了相应的环境变量。然后,在VS2013中创建一个新的项目,将libcurl的源代码添加到项目中。接着,在项目属性中设置包含目录和目录,指定OpenSSL和zlib的头文件和文件的位置。 最后,进行编译和链接操作,生成libcurl文件和可执行文件。编译成功后,就可以在VS2013中使用libcurl的各种功能了。 总结来说,编译libcurl时需要使用OpenSSL和zlib,并确保已正确配置VS2013的编译环境,包含相关的头文件和文件。完成配置后,就可以在VS2013中编译和使用libcurl了。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MStudyStudio

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值