一、下载

官网下载地址 :  https://curl.haxx.se/download.html

选择最新的一个即可。

二、安装

1、解压

下载到的压缩包为curl-7.51.0.tar.gz,使用命令  tar -zxvf curl-7.51.0.tar.gz   解压。

2、进入解压出的目录curl-7.51.0,执行

      (1)sudo ./configure

       (2)sudo make  

       (3)sudo make install

安装完成,在命令行测试是否可用,直接输入curl,出现如下情况安装基本成功

如果提示该命令不存在。则执行以下命令:

 export PATH=$PATH:/usr/local/curl/bin

检查/usr/include/里有没有crul没有的话,需要把解压出的include文件夹下的文件复制过去。

cp -r curl-7.51.0/include/curl/ /usr/include/

检查库和头文件

[root@localhost curl-7.51.0]# curl-config --cflags

-I/usr/local/include

 

[root@localhost curl-7.51.0]# curl-config --libs

-L/usr/local/lib -lcurl

以后使用gcc编译使用libcurl的c代码,都需加上-lcurl。

三、编译代码

使用libcurl官网的例子,只稍微修改。

  1. /***************************************************************************
  2. *                                  _   _ ____  _
  3. *  Project                     ___| | | |  _ \| |
  4. *                             / __| | | | |_) | |
  5. *                            | (__| |_| |  _ <| |___
  6. *                             \___|\___/|_| \_\_____|
  7. *
  8. * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  9. *
  10. * This software is licensed as described in the file COPYING, which
  11. * you should have received as part of this distribution. The terms
  12. * are also available at https://curl.haxx.se/docs/copyright.html.
  13. *
  14. * You may opt to use, copy, modify, merge, publish, distribute and/or sell
  15. * copies of the Software, and permit persons to whom the Software is
  16. * furnished to do so, under the terms of the COPYING file.
  17. *
  18. * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  19. * KIND, either express or implied.
  20. *
  21. ***************************************************************************/
  22. #include <stdio.h>
  23. #include <curl/curl.h>
  24. /* <DESC>
  25. * Get a single file from an FTPS server.
  26. * </DESC>
  27. */
  28. struct FtpFile {
  29. const char *filename;
  30. FILE *stream;
  31. };
  32. static size_t my_fwrite(void *buffer, size_t size, size_t nmemb,
  33. void *stream)
  34. {
  35. struct FtpFile *out=(struct FtpFile *)stream;
  36. if(out && !out->stream) {
  37. /* open file for writing */
  38. out->stream=fopen(out->filename, "wb");
  39. if(!out->stream)
  40. return -1; /* failure, can't open file to write */
  41. }
  42. return fwrite(buffer, size, nmemb, out->stream);
  43. }
  44. int main(void)
  45. {
  46. CURL *curl;
  47. CURLcode res;
  48. struct FtpFile ftpfile={
  49. "yourfile.bin", /* name to store the file as if successful */
  50. NULL
  51. };
  52. printf("come in");
  53. return 0;
  54. curl_global_init(CURL_GLOBAL_DEFAULT);
  55. curl = curl_easy_init();
  56. if(curl) {
  57. /*
  58. * You better replace the URL with one that works! Note that we use an
  59. * FTP:// URL with standard explicit FTPS. You can also do FTPS:// URLs if
  60. * you want to do the rarer kind of transfers: implicit.
  61. */
  62. curl_easy_setopt(curl, CURLOPT_URL,
  63. "ftp://user@server/home/user/file.txt");
  64. /* Define our callback to get called when there's data to be written */
  65. curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, my_fwrite);
  66. /* Set a pointer to our struct to pass to the callback */
  67. curl_easy_setopt(curl, CURLOPT_WRITEDATA, &ftpfile);
  68. /* We activate SSL and we require it for both control and data */
  69. curl_easy_setopt(curl, CURLOPT_USE_SSL, CURLUSESSL_ALL);
  70. /* Switch on full protocol/debug output */
  71. curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
  72. res = curl_easy_perform(curl);
  73. /* always cleanup */
  74. curl_easy_cleanup(curl);
  75. if(CURLE_OK != res) {
  76. /* we failed */
  77. fprintf(stderr, "curl told us %d\n", res);
  78. }
  79. }
  80. if(ftpfile.stream)
  81. fclose(ftpfile.stream); /* close the local file */
  82. curl_global_cleanup();
  83. return 0;
  84. }

编译:gcc ftpsget.c -o ddd.out -lcurl

执行:

可能会出现的问题:error while loading shared libraries: libcurl.so.4: cannot open shared object file: No such file or directory

解决方法:

查找 libcurl所有相关的so库所在位置,在/etc/ld.so.conf中加入libcurl有关so库所在目录。

进入根目录/,执行find -name *libcurl.so*,就会发现所在目录。

在/etc/ld.so.conf中加入   /usr/local/lib    这一行,

保存/etc/ld.so.conf

执行命令  /sbin/ldconfig -v  生效。

Linux libcurl安装及注意事项的更多相关文章

  1. Linux安装系统注意事项及系统初始化

      Linux安装系统注意事项 1.分区 学习用途: /boot:200M /swap :内存的1到2倍 /:根据需要分配大小,比如虚拟机下总空间是15G,那么可以分配8——10G跟/分区,如果是生产 ...

  2. 安装基于 Linux 发行版的重要事项(流程指引)

    安装基于 Linux 发行版的重要事项(Install important issues based on the Linux distribution. (Process guidance)) 1. ...

  3. windows下和linux下libcurl安装

    下载源代码,在winbuild里面有个说明文件: Building with Visual C++, prerequisites==================================== ...

  4. Linux上安装Zookeeper以及一些注意事项

    最近打算出一个系列,介绍Dubbo的使用. 分布式应用现在已经越来越广泛,Spring Could也是一个不错的一站式解决方案,不过据我了解国内目前貌似使用阿里Dubbo的公司比较多,一方面这个框架也 ...

  5. DBA_在Linux上安装Oracle Database11g数据库(案例)

    2014-08-08 Created By BaoXinjian

  6. 记录Linux下安装elasticSearch时遇到的一些错误

    记录Linux下安装elasticSearch时遇到的一些错误 http://blog.sina.com.cn/s/blog_c90ce4e001032f7w.html (2016-11-02 22: ...

  7. Nginx入门篇-基础知识与linux下安装操作

    我们要深刻理解学习NG的原理与安装方法,要切合实际结合业务需求,应用场景进行灵活使用. 一.Nginx知识简述Nginx是一个高性能的HTTP服务器和反向代理服务器,也是一个 IMAP/POP3/SM ...

  8. 机器学习linux系统环境安装

    机器学习linux系统环境安装 安装镜像下载 可以自己去ubuntu官方网站按照提示下载amd64的desktop版本 或者考虑到国内镜像站点下载,如tuna,163, ali等 课程使用最新的17. ...

  9. Linux基础学习(6)--Linux软件安装

    第六章——Linux软件安装 一.软件包管理简介 1.软件包分类: (1)源码包:脚本安装包 (2)二进制包(RPM包.系统默认包) 2.源码包: (1)源码包的优点:开源,如果有足够的能力,可以修改 ...

随机推荐

  1. 深入理解 HTTP/1.x、HTTP/2 和 HTTPS

    很多站长可能到现在都没有理解 HTTP/1.x.HTTP/2 和 HTTPS 之间的区别和关系吧?说实话,明月也是“一知半解”的水准而已,今天看到了这篇文章感觉总结还算是比较全面,特此分享出来给大家就 ...

  2. MinGW g++.exe 编译 DLL 时,导出函数名带@的问题

    今天尝试用CodeBlocks写了一个简单的Dll,发现生成的 dll 文件导出的函数名后面都有一个 @xxx 从生成的 libDll2.def 中看到: EXPORTS DllMain@ @ Max ...

  3. PHP strlen 对中文 的定义

    $zhStr = ‘您好,中国!’; // gbk编码下每个中文字符所占字节为2echo strlen($zhStr); // 输出:12 //utf-8编码下每个中文字符所占字节为3 echo st ...

  4. SAINT学习笔记

    SAINT的介绍 SAINT(Significance Analysis of INTeractome)是一种概率方法,用于在亲和纯化-质谱(AP-MS)实验中对阴性对照的诱饵-猎物相互作用进行打分, ...

  5. Unary模式下客户端创建 default-executor 和 resolver-executor 线程和从启动到执行grpc_connector_connect的主要流程

    (原创)C/C/1.25.0-dev grpc-c/8.0.0, 使用的例子是自带的例子GreeterClient 创建 default-executor 和 resolver-executor 线程 ...

  6. xcode红色文件夹或文件解决方法

    文件夹或文件变红是找不到文件导致,解决方法如下: 选中红色的文件或者文件夹,在最右边出现菜单里面有个Location,下一行有个文件夹按钮,点击选择正确的文件路径或者文件就可以了.

  7. Linux C++ Socket 高并发短连接 TIME_WAIT 挥之不去解决方法

    近期遇到一个项目 需要在Linux上建立一个Socket 进行 HTTP_GET , 需要线程高并发的 使用TCP Socket 进行Send 发送HTTP_GET请求到 指定网站 . 而且不需要re ...

  8. HDU校赛 | 2019 Multi-University Training Contest 2

    2019 Multi-University Training Contest 2 http://acm.hdu.edu.cn/contests/contest_show.php?cid=849 100 ...

  9. FusionInsight大数据开发---sorl应用开发

    sorl应用开发 要求: 了解Solr应用开发适用场景 熟悉Solr应用开发流程 熟悉并使用Solr常用API 理解Collection设计基本原则 应用开发实践 Solr简介 Solr是一个高性能, ...

  10. 常用Java API之Scanner:功能与使用方法

    Scanner 常用Java API之Scanner:功能与使用方法 Scanner类的功能:可以实现键盘输入数据到程序当中. 引用类型的一般使用步骤:(Scanner是引用类型的) 1.导包 imp ...