• Libcurl安装及编译


    1.安装curl wget http://curl.haxx.se/download/curl-7.26.0.tar.gz 

       tar -zxvf curl-7.26.0.tar.gz 
      cd curl-7.26.0
      ./configure --prefix=/usr/local/curl   
      make 
       make install
       这里需要root权限
    2.查看当前已安装的curl版本
      curl -V
    3.如果当前系统已经安装旧版本的curl而不想覆盖,或者没有root权限,可将curl安装到本地目录,即:修改prefix=后面的路径为:/home/目标目录。查看本地目录的版本需要进入目标目录中的bin下,然后执行./curl -V。
    4.在函数中调用curl并编译的时候,默认将使用系统中已安装的curl,如果想要使用本地目录中的,需要进行头文件和库文件的目录设置,其中:设置头文件为-I,设置库文件为-L,比如:
      g++ test.cpp -lcurl -I /home/目标目录/include/ -L /home/目标目录/lib/

    5.可将自己的程序和curl一起编译成静态库/动态库,供其他程序使用:
      (1)生成静态库:
        ar rcs libmylib.a mylib.o
      (2)静态库的使用:
        gcc -o test test.c -lmylib
      (注:系统约定静态库以lib开头,以.a结尾,而动态库以.so结尾,因而编译的时候不需要带上前缀和后缀。)
      (3)生成动态库:
        gcc -fPIC -o mylib.o -c mylib.c
        gcc -shared -o libttt.so mylib.o
          或者只执行一条语句
          gcc -fPIC -shared -o libttt.so mylib.c
      (4)动态库的使用:
        gcc -o test test.c /usr/lib/libttt.so
        (注:引用动态库时,必须含有路径,如果只是使用libttt.so,则必须确保这个库所在目录包括在PATH 环境变量中。)

    6.调用编译好的curl库,运行程序的时候,可能会提示下面错误信息:
        error while loading shared libraries: libcurl.so.4: cannot open shared object file: No such file or directory
      这种情况一般是由于没有root权限进行安装,因而默认的库查找目录下没有相应文件。
      解决办法:
       (1)使用root权限进行安装。
      (2)设置LD_LIBRARY_PATH=dir(dir为libcurl.so.4的目录),例如:export LD_LIBRARY_PATH=/home/lib,可通过echo $LD_LIBRARY_PATH检查设置是否成功,此项设置在shell的当前会话中全局生效。
      (3)多个文章中提到可以使用gcc的-R或-rpath选项来在编译时就指定库的查找路径,并且该库的路径信息保存在可执行文件中,运行时它会直接到该路径查找库,避免了使用LD_LIBRARY_PATH环境变量查找,但是我所使用的系统中似乎不支持该选项。
       g++编译的时候使用-lcrypto -lidn -lssl -lrt /usr/lib/libcurl.a(意思是:前面四个使用动态链接,后面一个使用静态链接),假设g++生成的可执行程序名为CurlTest,则执行该语句:ldd CurlTest
      如果仍然失败的话,可重新编译安装libcurl,执行步骤1,但是在./configure的执行语句中需要添加:--disable-ldap --disable-ldaps,编译好之后再进行链接即可。
  • 相关阅读:
    快速排序算法图文详解(模版使用)
    数据库中事务和隔离级别解析
    详解对象的创建,布局,定位,存活判断
    SpringCloud-Ribbon:认识并配置负载均衡
    SpringCloud-Feign:接口式微服务调用
    SpringCloud-Eureka(3)集群配置和了解CAP原则
    SpringCloud-Eureka(2)服务注册与信息配置
    SpringCloud-Eureka(1)认识Eureka和初步配置
    Promise
    es6
  • 原文地址:https://www.cnblogs.com/chris-cp/p/3510983.html
Copyright © 2020-2023  润新知