海思平台交叉编译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(一 ... 
随机推荐
- ASP.net Substitution 页面缓存而部分不缓存的实现方法
			在ASP.NET中要实现部分内容非缓存,而其它的都需要缓存输出,可以使用Substitution控件实现. <%@ Page Language="C#" AutoEventW ... 
- ORACLE 11GR2 安装时配置了域,后期删除
			因为用了一个安全平台.此平台居然不支持oracle中的服务吗有"."而这个点就是因为当时安装oracle录入了域.原来以为是修改服务名.百多了很多,最后发现就是删除域即可 感谢此文 ... 
- layer 遮罩层等待
			效果 代码: js函数之前:var msg = layer.msg('努力中加载中...', {icon: 16,shade: [0.5, '#f5f5f5'],scrollbar: false,of ... 
- Source InSight context 窗口丢失的解决办法
			我没关si的情况下强制关机导致的 Source InSight context 窗口丢失的解决办法 (2010-09-03 13:35:45) 转载▼ 今天早晨改改CLI,上了趟WC,回来发现 ... 
- Tomcat的HTTPS配置及HTTP自动跳转配置
			1.生成证书 (1)在jdk的安装目录\bin\keytool.exe下打开keytool.exe 在命令行中输入以下命令: keytool -genkeypair -alias 以上命令将生产一对非 ... 
- Pygame播放声音与音效
			简单学习自小甲鱼视频教学(笔记) 实现功能: 运行后自动播放背景音乐,单击左键播放音效①,单击右键播放音效②, 空格键控制暂停背景音乐与恢复背景音乐,并且实现播放图标的切换. 代码如下: import ... 
- 1、Python代码初识
			由于python2.7版本默认使用的是ASCII码,必须在编写前加入两行代码,表示使用UTF-8码. #!/usr/bin/python # -*- coding:utf-8 -*- print('你 ... 
- const引用和constexpr
			1.const指针 eg: (1) int const * p = nullptr; p = new int[10]; p[3] = 4; //error 我们发现第三行没法编译,这是因为第一行的c ... 
- SpringBoot实战(十三)之缓存
			什么是缓存? 引用下百度百科的解释: 缓存就是数据交换的缓冲区(又称作Cache),当某一硬件要读取数据时,会首先从缓存中查找需要的数据,找到了则直接执行,找不到的话则从内存中查找.由于缓存的运行速度 ... 
- XCODE7 和IOS9适配后的一些问题
			网上比较常规的几个问题就不细说了. 什么HTTPS.bitcode.什么什么的. 记录几个自己又遇到了但是网上没有说的. 启动应用报错, *** Terminating app due to unca ... 
