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权限
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
--disable-ldaps,编译好之后再进行链接即可。
Libcurl安装及编译的更多相关文章
- 急速安装lnmp 编译版本
急速安装lnmp 编译版本 安装msyql+PHP 系统centos6.5 安装 开发软件包 已经改成了163的源需要执行下面的代码 官网不自带 libmcrypt libmcrypt-devel w ...
- libcurl库的编译
终于弄懂了libcurl库的编译,记下来免得忘记. 下载地址: libcurl库:http://curl.haxx.se/latest.cgi?curl=zip openssl安装包:http ...
- 安装maven编译环境
安装maven编译环境 1.默认已经装好yum并配置好yum源(推荐使用163yum源) 2.安装JDK 3.安装相关依赖环境(root用户登陆) yum install -y cmake lzo-d ...
- CentOS离线安装GCC编译环境
gcc编译环境rpm下载 安装相关的rpm包,具体版本可能随时间变化而变化,可以去以下地址下载: 重庆大学镜像:http://b.mirrors.lanunion.org/CentOS/中国科学技术大 ...
- windows平台下安装、编译、使用mongodb C++ driver
本博客将记录在Win8.1 ,VS2013环境下编译.配置mongodb C++ driver的流程. 1.下载预备 下载Boost:http://sourceforge.net/projects/b ...
- eclipse安装反编译工具
身为一名程序员来说,日常最常做的就是编写代码和查看别人写好的源代码了,有时候打开别人写的class文件发现根本不是自己想要的,所以给大家介绍一种eclipse中反编译class文件的工具. 第一步:下 ...
- [转]Caffe在Linux下的安装,编译,实验
Caffe在Linux下的安装,编译,实验 原文地址:http://www.cnblogs.com/evansyang/p/6150118.html 第一部分:Caffe 简介 caffe是有伯克利 ...
- python 安装预编译库注意事项-pip
一般安装依赖库用pip install 库名 就可以,某些情况下依赖的库需要安装预编译好的, 可以参考pip 安装时的错误信息 下面这个链接中可以直接下载 http://www.lfd.uci.edu ...
- WebStorm 8.0安装LESS编译环境的教程
WebStorm是一个非常棒的Web前端开发编辑器,被程序猿们成为“最智能的JavaScript IDE”.对HTML5.Bootstrap框架.Node.js等都有完美支持.目前最新版本为WebSt ...
随机推荐
- 《转》Java 信号量 Semaphore 介绍
该文章转自:http://www.cnblogs.com/whgw/archive/2011/09/29/2195555.html Semaphore当前在多线程环境下被扩放使用,操作系统的信号量是个 ...
- BT Smart vs ANT+ 技术孰优孰劣?
自从Bluetooth SIG提出Bluetooth 4.0,其BLE(Bluetooth Low Energy)开始用于穿戴式电子,而后也用于iBeacon室内定位,更之后Bluetooth 4.1 ...
- LeetCode总结 -- 高精度篇
我们常见的一些主要的数据结构比方整型int或者浮点型float由于位数过多无法用内置类型存储,这时候我们就须要自己实现高精度的数据类型来进行存储和运算.这样的问题在实际产品中还是比較有用的,所以相对来 ...
- Android 读取Assets中图片
bgimg0 = getImageFromAssetsFile("Cat_Blink/cat_blink0000.png"); * * 从Assets中读取图片 */ privat ...
- bp神经网络及matlab实现
本文主要内容包含: (1) 介绍神经网络基本原理,(2) AForge.NET实现前向神经网络的方法,(3) Matlab实现前向神经网络的方法 . 第0节.引例 本文以Fisher的Iris数据集 ...
- XmlSerializer
XmlSerializer作用是将对象序列化到 XML 文档中和从 XML 文档中反序列化对象.XmlSerializer 使您得以控制如何将对象编码到 XML 中. 所在的命名空间:System.X ...
- html 中的name,id ,value,class,list 作用与区别
name: 单独一个网页中,一个控件是否设置name不会影响这个网页功能的实现.当我们需要把这个控件 所关联的数据传递到数据库时,就必须设置name属性,否则这个值是没办法传到服务器保存的: id: ...
- JavaScript引用类型之Array数组的排序方法
数组中已经存在两个JavaScript给我们定义好的重排序的方法:reverse()和sort()方法,下面来简单分析下: 1.reverse() 用于反转数组项的顺序,代码如下: <sc ...
- IOS UITextField &UITextView
UITextField 限制textField长度 曾经,以为输入框只是输入字符的,但真的认真为一个登陆界面输入框而改了六七次以后,发现好烦人啊,先谢谢测试的不厌其烦,不杀之恩,不想再用IOS的输入框 ...
- leetcode Contains Duplicate II python
Given an array of integers and an integer k, find out whether there are two distinct indices i and j ...