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功能的更多相关文章

  1. cryptopp使用Qt mingw编译,以及海思平台交叉编译

    编译工程生成,使用qmake生成qt工程文件(海思平台时,要用海思平台的qmake),将 TEMPLATE = app 修改为: TEMPLATE = lib 添加如下: win32:LIBS += ...

  2. OpenCV开发笔记(七十四):OpenCV3.4.1+ffmpeg3.4.8交叉编译移植到海思平台Hi35xx平台

    前言   移植opencv到海思平台,opencv支持对视频进行解码,需要对应的ffmpeg支持.   Ffmpeg的移植   Ffmpeg的移植请参考之前的文章:<FFmpeg开发笔记(十): ...

  3. 用VS2013+VELT-0.1.4进行海思平台 Linux内核 的开发

    快乐虾 http://blog.csdn.net/lights_joy/(QQ群:Visual EmbedLinux Tools 375515651) 欢迎转载,但请保留作者信息 本文仅适用于vs20 ...

  4. 【ARM-Linux开发】用VS2013+VELT-0.1.4进行海思平台 Linux内核 的开发

    1.1    什么是VELT VELT的全称是Visual EmbedLinuxTools,它是一个与visual gdb类似的visual studio插件,用以辅助完成Linux开发.利用这个插件 ...

  5. 海思平台服务器版软件V15.2产品发布

    深度操作系统海思平台服务器版软件是武汉深之度科技有限公司发布的针对华为海思平台的TaiShan系列服务器发布的企业级服务器操作系统软件产品,主要面向企业级服务器应用场景,为用户在国产化平台上提供更具可 ...

  6. (转)海思平台HI35XX系列内存设置

    海思平台的内存分为两部分,一部分给系统使用,另外的一部分给多媒体使用.可以通过cat /proc/meminfo查看系统内存和cat /proc/media-mem 查看多媒体内存使用情况. /pro ...

  7. 用vs2013+velt-0.1.4进行嵌入式开发 进行海思平台 UBOOT 开发

    1.1    什么是VELT VELT的全称是Visual EmbedLinuxTools,它是一个与visual gdb类似的visual studio插件,用以辅助完成Linux开发.利用这个插件 ...

  8. 海思dv300cv500交叉编译webrtc

    感谢声网提供的webrtc国内源码镜像. 首先要安装好海思编译工具链和git. 先替换一下webrtc代码的仓库网址路径 git config --global user.email "10 ...

  9. libx264开发笔记(一):libx264介绍、海思平台移植编译

    前言   在编译ffmpeg时,使用到h264编码时是需要依赖libx264的,本文章是将将libx264作为静态库移植到海思上.   相关博客 <Qt开发笔记之编码x264码流并封装mp4(一 ...

随机推荐

  1. 主存储器与CPU的连接

    半导体存储器的读写时间一般在十几至几百毫微秒之间,其芯片集成度高,体积小,片内含有译码器和寄存器等电路.常用的半导体存储器芯片有多字一位片和多字多位片,如16M位容量的芯片可以有16M×1位和4M×4 ...

  2. js获取鼠标坐标位置兼容多个浏览器

    这个是IE 11 下兼容下视图测试时可用. $(window).bind('beforeunload', function (event) { var _this = this; var x = ev ...

  3. December 15th 2016 Week 51st Thursday

    At the touch of love everyone becomes a poet. 每一个沐浴在爱河中的人都是诗人. You call your love as your sweetheart ...

  4. [BZOJ 1588][HNOI 2002] 营业额统计

    这果然是在那个没有STL的年代出的题 1588: [HNOI2002]营业额统计 Time Limit: 5 Sec  Memory Limit: 162 MBSubmit: 16648  Solve ...

  5. Windows 下安装Python包(Numpy)的错误:Unable to find vcvarsall.bat

    情景简介: Windows 环境下安装Python2.7的Numpy扩展包时提示:error: Unable to find vcvarsall.bat 经过不懈的Google/Bing,发现不仅安装 ...

  6. Io性能分析

    一.iostat使用说明 1.命令使用方法 使用ixstat –x 1 可以每隔1秒钟采集所有设备的io信息.其中的1类似于使用“vmstat  1”后面的1. 2.命令格式说明 ―――――――――― ...

  7. Java List详解,面试中应该如何解答关于List的问题

    对于面试,我们在介绍Java的List的时候,一般需要介绍到,什么是List?List包括什么?各自在用法上有什么区别,在存储上有什么区别?List需要注意什么?把这些问题串起来,我们可以这样介绍: ...

  8. gluoncv voc_detection

    https://github.com/zhreshold/gluon-cv/commit/73b3986aaa2e0d0e6f3f428c12072e3a9d29905e gluoncv可能版本还没更 ...

  9. C++内存总结——开坑,随时总结添加

    C++内存区域分为:  程序代码区:存储程序代码的地方 栈区:编译器自动管理(分配释放)的内存区域,如函数参数,函数中的局部变量 堆区(又称动态存储区):由C语言中的函数malloc和free和C++ ...

  10. virtualbox+vagrant学习-4-Vagrantfile-9-Vagrant Settings

    Vagrant Settings 配置命名空间:config.vagrant config.vagrant配置将修改vagrant本身的行为 Available Settings可用设置 config ...