海思平台交叉编译curl支持SSL功能
1.准备工具
1).交叉编译工具
2).下载libcurl和openssl源代码,我使用的是(openssl-1.0.2o.tar,curl-7.59.0.tar)
3).查看cpu详细
~ # cat /proc/cpuinfo
Processor : ARMv7 Processor rev 5 (v7l)
BogoMIPS : 1196.85
Features : swp half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x0
CPU part : 0xc07
CPU revision : 5
Hardware : hi3516a
Revision : 0000
Serial : 0000000000000000
2.开始编译
openssl
库版本 : openssl-1.0.2o
-march和-D__ARM_MAX_ARCH__的值需要对比cpu信息调整
编译参数:
./Configure --prefix=/home/xt/libopenssl --cross-compile-prefix=arm-hisiv300-linux- no-asm shared linux-armv4 -march=armv7-a -D__ARM_MAX_ARCH__=7
make&&make install
curl
库版本 : curl-7.59.0
编译参数:
env LDFLAGS=-R/home/xt/lib/libopenssl/lib ./configure --prefix=/home/xt/libcurl CC=arm-hisiv300-linux-gcc --host=arm-hisiv300-linux --with-ssl=/home/xt/libopenssl
需要看到对用SLL支持显示为支持状态.

这里显示的no就需要检查前面步骤是否错误了
make&&make install
3.测试代码测试(来自互联网,本人也是用的这段代码测试的)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <curl/curl.h>
static size_t save_response_callback(void *buffer, size_t size, size_t count, void **response)
{
char *ptr = NULL;
printf("buffer is %s\n", (char *)buffer);
ptr = (char *)malloc(count * size + 4);
memcpy(ptr, buffer, count * size);
*response = ptr;
return count;
}
int main(int argc, char *argv[])
{
CURL *curl;
CURLcode res;
char *response = NULL;
if (argc != 2)
{
printf("Usage:file<url>;\n");
return;
}
//curl_global_init(CURL_GLOBAL_DEFAULT);
curl = curl_easy_init();
if (curl != NULL)
{
#if SSL_CERTIFICATE_VERIFICATION
// 方法1, 设定一个SSL判别证书, 未测试
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 1L);
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 1L);
curl_easy_setopt(curl, CURLOPT_CAINFO, "cacert.pem"); // TODO: 设置一个证书文件
#else
// 方法2, 设定为不验证证书和HOST
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
#endif
curl_easy_setopt(curl, CURLOPT_HEADER, 0); //设置httpheader 解析, 不需要将HTTP头写传入回调函数
curl_easy_setopt(curl, CURLOPT_URL, argv[1]);
curl_easy_setopt(curl, CURLOPT_FAILONERROR, 1L); //显示HTTP状态码
curl_easy_setopt(curl, CURLOPT_VERBOSE, 0L); // TODO: 打开调试信息
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1); //设置允许302 跳转
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, &save_response_callback);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, response);
//curl_easy_setopt(curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4); //指定解析到的IP地址格式,多IP才有意义
curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 10L); //在发起连接前等待的时间
curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1L); //忽略所有的curl传递给php进行的信号
curl_easy_setopt(curl, CURLOPT_TIMEOUT, 30L); //设置cURL允许执行的最长秒数(下载大文件的时候需要调节)
curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1); //linux多线程情况应注意的设置(防止curl被alarm信号干扰)
set_share_handle(curl);
res = curl_easy_perform(curl);
if (res != CURLE_OK)
{
printf("curl_wasy_perform error = %s", curl_easy_strerror(res));
}
printf("response<%s>\n", response);
curl_easy_cleanup(curl);
}
}
官方例子:https://curl.haxx.se/libcurl/c/https.html
海思平台交叉编译curl支持SSL功能的更多相关文章
- cryptopp使用Qt mingw编译,以及海思平台交叉编译
编译工程生成,使用qmake生成qt工程文件(海思平台时,要用海思平台的qmake),将 TEMPLATE = app 修改为: TEMPLATE = lib 添加如下: win32:LIBS += ...
- OpenCV开发笔记(七十四):OpenCV3.4.1+ffmpeg3.4.8交叉编译移植到海思平台Hi35xx平台
前言 移植opencv到海思平台,opencv支持对视频进行解码,需要对应的ffmpeg支持. Ffmpeg的移植 Ffmpeg的移植请参考之前的文章:<FFmpeg开发笔记(十): ...
- 用VS2013+VELT-0.1.4进行海思平台 Linux内核 的开发
快乐虾 http://blog.csdn.net/lights_joy/(QQ群:Visual EmbedLinux Tools 375515651) 欢迎转载,但请保留作者信息 本文仅适用于vs20 ...
- 【ARM-Linux开发】用VS2013+VELT-0.1.4进行海思平台 Linux内核 的开发
1.1 什么是VELT VELT的全称是Visual EmbedLinuxTools,它是一个与visual gdb类似的visual studio插件,用以辅助完成Linux开发.利用这个插件 ...
- 海思平台服务器版软件V15.2产品发布
深度操作系统海思平台服务器版软件是武汉深之度科技有限公司发布的针对华为海思平台的TaiShan系列服务器发布的企业级服务器操作系统软件产品,主要面向企业级服务器应用场景,为用户在国产化平台上提供更具可 ...
- (转)海思平台HI35XX系列内存设置
海思平台的内存分为两部分,一部分给系统使用,另外的一部分给多媒体使用.可以通过cat /proc/meminfo查看系统内存和cat /proc/media-mem 查看多媒体内存使用情况. /pro ...
- 用vs2013+velt-0.1.4进行嵌入式开发 进行海思平台 UBOOT 开发
1.1 什么是VELT VELT的全称是Visual EmbedLinuxTools,它是一个与visual gdb类似的visual studio插件,用以辅助完成Linux开发.利用这个插件 ...
- 海思dv300cv500交叉编译webrtc
感谢声网提供的webrtc国内源码镜像. 首先要安装好海思编译工具链和git. 先替换一下webrtc代码的仓库网址路径 git config --global user.email "10 ...
- libx264开发笔记(一):libx264介绍、海思平台移植编译
前言 在编译ffmpeg时,使用到h264编码时是需要依赖libx264的,本文章是将将libx264作为静态库移植到海思上. 相关博客 <Qt开发笔记之编码x264码流并封装mp4(一 ...
随机推荐
- Docker-容器数据卷
docker容器数据卷相当于外置的移动硬盘 docker容器数据卷主要功能是:容器的持久化.容器间继承+共享数据 特点: (1)数据卷可以容器之间共享或重用数据 (2)卷中更改可以直接生效 (3)数据 ...
- Sql Server增加Sequence序列语句
1.创建序列 下面的示例创建名为 DecSeq 使用一个序列 十进制 具有介于 0 到 255 之间的数据类型.序列以 125 开始,每次生成数字时递增 25. 因为该序列配置为可循环,所以,当值超过 ...
- 在 Windows Server Container 中运行 Azure Storage Emulator(一):能否监听自定义地址?
我要做什么? 改 ASE 的监听地址.对于有强迫症的我来说,ASE 默认监听的是 127.0.0.1:10000-10002,这让我无法接受,所以我要将它改成域名 + 80 端口的方式: 放到容器中. ...
- December 18th 2016 Week 52nd Sunday
May your love soar on the wings of a dove in flight. 愿你的爱乘着飞翔中的白鸽,展翅高飞. May my life soar on the wing ...
- procedure of intall and setup centos 6.5
select webserver install option,and select ,uncheck the postgresql option selected some “… platform” ...
- 学习python第一天总纲
1).python基础语法:4周课程(结束阶段考试) 2).前端知识点:html.css.javascript(js).jQuery 3).Linux(系统).数据库(关系型&非关系型) 4) ...
- 问题:android学习内容破碎,我个人关于如何学习android的一些个人经历
android学习两个月心得 我于大三下学期,开始准备学习android,在寒假期间,学了毕向东的java视频的前10天,觉得还不错,上网找评论,他们都说,只要学到多线程就可以学习android了, ...
- java开发优化常用的快捷键
快速打印的输出语句:输入syso,然后按alt+/,即可 快速删除一行:ctrl+D 让代码块缩进:选中要缩进的代码,然后按tab键 让代码块退格:选中要退格的代码,然后按shift+tab键 格式化 ...
- IPUtils 工具类
package com.hxqc.basic.dependency.util; import org.apache.commons.lang.StringUtils; import javax.ser ...
- POJ3907 Build Your Home
嘟嘟嘟 题意:按逆时针或顺时针给出一个多边形,求面积. 解法:直接套用公式:\(S = \frac{1}{2}|\sum _ {i = 1} ^ {n} {v_i \times v_{i + 1}}| ...