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 ...
随机推荐
- 【Chromium中文文档】Web安全研究
转载请注明出处:https://ahangchen.gitbooks.io/chromium_doc_zh/content/zh//General_Architecture/Extension_Sec ...
- “Options模式”下各种类型的Options对象是如何绑定的?
“Options模式”下各种类型的Options对象是如何绑定的? 旨在生成Options对象的配置绑定实现在IConfiguration接口的扩展方法Bind上.配置绑定的目标类型可以是一个简单的基 ...
- [Leetcode][Python]29: Divide Two Integers
# -*- coding: utf8 -*-'''__author__ = 'dabay.wang@gmail.com' 29: Divide Two Integershttps://oj.leetc ...
- nova的 microversion 实现
之前想写nova的policy的实现, 但是发现网上,有人写的很不错了. 但是个人认为存在一些问题. ref: http://www.cnblogs.com/shaohef/p/4527436.htm ...
- [置顶] 阿里IOS面试题之多线程选用NSOperation or GCD
今天早上接到了阿里从杭州打过来的电话面试.虽然近期面试了一些大中型的互联网企业,但是跟素有“IT界的黄浦军校”的阿里面试官接触还是不免紧张. 面试持续了三四十分钟吧,大部分问题都是简历上的项目经验而来 ...
- 一个解析url参数方法
function getRequestParameter(a) { var b = document.location.search || document.location.hash; if (a ...
- js apply 和call的区别
function Person(name, profession) { this.name = name; this.profession = profession; this.speak = fun ...
- JAVA里的String、Timestamp、Date相互转换
Timestamp转化为String: SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//定义 ...
- redolog
总结: 教育我们:redo文件组需要创建多个组,建议至少3个,每个组至少2个文件,最好放在不同的硬盘上. 当联机日志文件丢失一般使用清除日志的方法: alter database clear logf ...
- C和C++运算符 (转)
这里是C和C++语言的运算符列表.所有列出的运算符皆含纳于C++:第三个栏目里的内容也使用C来描述.应当注意的是C不支持运算符重载. 下列运算符在两个语言中都是顺序点(运算符未重载时): && ...