• Ubuntu18.04.2 amd64编译安装libcurl支持https


    1.准备工作,安装ssl库:

    sudo apt-get install openssl
    sudo apt-get install libssl-dev

    2.下载libcurl源代码:

    wget https://curl.haxx.se/download/curl-7.65.3.tar.xz

    3.解压并进入源代码目录:

    tar xf curl-7.65.3.tar.xz
    cd curl-7.65.3

    4.配置编译选项:

    ./configure --prefix=/usr                           
                --disable-static                        
                --enable-threaded-resolver              
                --with-ca-path=/etc/ssl/certs
    

    5.编译:

    make
    

    6.安装(需要root权限):

    make install &&
    
    rm -rf docs/examples/.deps &&
    
    find docs ( -name Makefile* -o -name *.1 -o -name *.3 ) -exec rm {} ; &&
    
    install -v -d -m755 /usr/share/doc/curl-7.65.3 &&
    cp -v -R docs/*     /usr/share/doc/curl-7.65.3

    至此,编译安装完成。

    写代码测试一下:

    #include <stdio.h>
    #include <curl/curl.h>
     
    int main(void)
    {
      CURL *curl;
      CURLcode res;
     
      curl_global_init(CURL_GLOBAL_DEFAULT);
     
      curl = curl_easy_init();
      if(curl) {
        curl_easy_setopt(curl, CURLOPT_URL, "https://www.baidu.com/");
     
        /* Perform the request, res will get the return code */
        res = curl_easy_perform(curl);
        /* Check for errors */
        if(res != CURLE_OK)
          fprintf(stderr, "curl_easy_perform() failed: %s
    ",
                  curl_easy_strerror(res));
     
        /* always cleanup */
        curl_easy_cleanup(curl);
      }
     
      curl_global_cleanup();
     
      return 0;
    }

    编译:

    gcc hello_https.c -l curl -o hello_https

    运行:

    ./hello_https

    运行结果截图:

     附 自定义回调处理响应数据代码:

    #include <stdio.h>
    #include <curl/curl.h>
    
    static size_t write_data(void *ptr, size_t size, size_t nmemb, void *stream)
    {
        if(stream == NULL) 
        return 0;
        printf("%s", ptr);
        return size * nmemb;
    }
    
    int main(void)
    {
      CURL *curl;
      CURLcode res;
     
      curl_global_init(CURL_GLOBAL_DEFAULT);
     
      curl = curl_easy_init();
      if(curl) {
        curl_easy_setopt(curl, CURLOPT_URL, "https://www.baidu.com/");
        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);
     
        /* Perform the request, res will get the return code */
        res = curl_easy_perform(curl);
        /* Check for errors */
        if(res != CURLE_OK)
          fprintf(stderr, "curl_easy_perform() failed: %s
    ",
                  curl_easy_strerror(res));
     
        /* always cleanup */
        curl_easy_cleanup(curl);
      }
     
      curl_global_cleanup();
     
      return 0;
    }
    View Code
  • 相关阅读:
    vb.net控件数组的问题
    用SQL语句创建和删除Access数据库中的表;添加列和删除列
    vs2003C#datagrid单行行高设定
    三亚自由人攻略.2009最新
    VB.NET窗口渐淡关闭
    都市男女的30声幽默叹息
    Windows 正版增值验证工具如何取消
    VAB删除Word多余空行
    VBA控制菜单栏上的菜单(如页面设置、打印)
    win7 下安装 adams
  • 原文地址:https://www.cnblogs.com/areful/p/11306651.html
Copyright © 2020-2023  润新知