一、下载

官网下载地址 :  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. 安装gerrit服务器

    一.环境准备 1.Java环境 gerrit依赖,用于安装gerrit环境. 下载:jdk-7u79-linux-x64.tar.gz http://www.oracle.com/technetwor ...

  2. spark 调优(官方文档)

    1.序列化 对象在进行网络传输或进行持久化时需要进行序列化,如果采用序列化慢或者消耗大量字节的序列化格式,则会拖慢计算. spark 提供了两种序列化类库 1). Java serialization ...

  3. QuantLib 金融计算——基本组件之 Money 类

    目录 QuantLib 金融计算--基本组件之 Money 类 概述 构造函数 成员函数 如果未做特别说明,文中的程序都是 python3 代码. QuantLib 金融计算--基本组件之 Money ...

  4. linux lnmp环境下 安装apache教程

    linux lnmp环境下 安装apache教程 源码安装 apr ,apr-util 安装apache要用<pre>wget http://mirrors.cnnic.cn/apache ...

  5. 连上Microbit板

    我们是在自己电脑上,用Mu编程,最终程序要烧录到Microbi板子的控制芯片中去,还记得这款芯片是哪家公司生产的?是多少位的?呵呵. 因此,我们要把板子和电脑连起来,用常见的一大一小的USB线就可以了 ...

  6. Linux时间日期类,压缩和解压类

    一.时间日期类 1.data指令 1.基本指令 date 显示当前日期 data +%Y 显示当前年份 data +%m 显示当前月份 data +%d 显示当前天 data +%Y-%m-%d %H ...

  7. 重学C语言之结构体

    概念 结构体是一种构造类型,由若干个成员组成,成员可以是基本数据类型,或是另一个结构体 声明结构体 struct 结构体名 { 成员列表 }; 结构体名表示结构的类型名. 声明一个结构体表示创建一种新 ...

  8. Java学习:线程池

    线程池 线程池概念:其实就是一个容纳多个线程的容器,其中的线程可以反复使用,省去了频繁创建线程对象的操作,无需反复创建线程而消耗过多的资源. 线程池:容器-->集合(ArrayList,Hash ...

  9. k8s-Annotation(注解)

    k8s-Annotation(注解) Annotation与Label类似,也使用key/value键值对的形式进行定义. Label具有严格的命名规则,它定义的是Kubernetes对象的元数据(M ...

  10. Windows 搭建 nginx rtmp服务器

    1.环境开发环境:windows开发工具:ffmpeg.nginx.nginx-rmtp-module.vlc media player播放器 2.准备文件官方ffmpeg下载地址:http://ww ...