libcurl 编译详解

项目中适用libcurl,反正是开源的,那就编译就OK了,只是在使用过程中遇到了N多蛋疼问题,记录下来,为遇到同样问题的朋友提供个参考。

正常使用的编译,网上多得是列一下也

./configure  --prefix=/usr/local/curl           安装的路径随便写。

make;make install

这样就搞定了。

我的问题是需要支持https,那么就需要把openssl编译进来,前提是你的系统安装了ssl,自己查查看吧,在/lib, /lib64,/usr/local,/usr/local/lib   反正自己找找,要是没有的话那恭喜你了,还得先下载或者编译openssl,这部分跳过去,我认为你有。

./configure --prefix=/usr/local/curl --with-ssl=/usr/local/ssl          假如你的ssl在/usr/local/ssl   这样执行完估计就会出现   SSL support:     enabled (OpenSSL)    你以为你搞定了?试一下curl -V看看有么有提示找不到libssl.so吧,如果没有提示,那么你比我幸运,如果提示了,请执行下面的这个

env LDFLAGS=-R/usr/local/ssl/lib  ./configure --prefix=/usr/local/curl --with-ssl=/usr/local/ssl         这样基本上可以确定帮你找得到libssl.so了。

好了,可以让你的程序加载libcurl了。

什么,你还是有问题,编译过不去,提示下面这一堆乱七八糟的错误

../lib64/libcurl.a(ldap.o): In function `Curl_ldap‘:

ldap.c:(.text+0xa0): undefined reference to `ldap_url_parse‘

ldap.c:(.text+0xb8): undefined reference to `ldap_err2string‘

ldap.c:(.text+0xee): undefined reference to `ldap_msgfree‘

ldap.c:(.text+0x107): undefined reference to `ldap_free_urldesc‘

ldap.c:(.text+0x119): undefined reference to `ldap_unbind_s‘

ldap.c:(.text+0x1bf): undefined reference to `ldap_set_option‘

ldap.c:(.text+0x1ce): undefined reference to `ldap_set_option‘

ldap.c:(.text+0x1e1): undefined reference to `ldap_init‘

ldap.c:(.text+0x255): undefined reference to `ldap_set_option‘

ldap.c:(.text+0x264): undefined reference to `ldap_set_option‘

ldap.c:(.text+0x293): undefined reference to `ldap_simple_bind_s‘

ldap.c:(.text+0x2c0): undefined reference to `ldap_set_option‘

ldap.c:(.text+0x2e6): undefined reference to `ldap_simple_bind_s‘

ldap.c:(.text+0x300): undefined reference to `ldap_err2string‘

ldap.c:(.text+0x350): undefined reference to `ldap_search_s‘

ldap.c:(.text+0x369): undefined reference to `ldap_err2string‘

ldap.c:(.text+0x39d): undefined reference to `ldap_first_entry‘

ldap.c:(.text+0x3e1): undefined reference to `ldap_get_dn‘

ldap.c:(.text+0x44f): undefined reference to `ldap_first_attribute‘

ldap.c:(.text+0x46e): undefined reference to `ldap_get_values_len‘

ldap.c:(.text+0x5a4): undefined reference to `ldap_value_free_len‘

ldap.c:(.text+0x5d6): undefined reference to `ldap_memfree‘

ldap.c:(.text+0x5ea): undefined reference to `ldap_next_attribute‘

ldap.c:(.text+0x600): undefined reference to `ldap_memfree‘

ldap.c:(.text+0x611): undefined reference to `ber_free‘

ldap.c:(.text+0x620): undefined reference to `ldap_next_entry‘

collect2: ld returned 1 exit status

那么恭喜你,ldap的内容你的系统中找不到。反正我的系统里是找不到,我也不想用他,那么就在编译的时候把它disable掉吧,如下:

env LDFLAGS=-R/usr/local/ssl/lib  ./configure --prefix=/usr/local/curl --with-ssl=/usr/local/ssl  --disable-ldap --disable-ldaps

这样配置后,理论上你就吧ldap的东西屏蔽了,什么叫理论,就是TM的别人OK,而我不行。看了一下curl的源代码,这些报错的地方在ldap.c中,而这个函数是否调用,都是根据CURL_DISABLE_LDAP这个宏能控制的,定义了这个宏,ldap的功能就彻底与你无缘了,OK,既然我配置不管用,我就直接改源代码,在curl_ldap.h中定义这个宏。重新配置编译。

再次把libcurl编译到你的工程中,OK。如果还有其他什么编译错误,那么有可能是curl中的某些选项你选了,但是系统里没有,用同样的方法搞定它。

时间: 2024-10-09 17:57:55

libcurl 编译详解的相关文章

Android APK反编译详解(转)

转自:http://blog.csdn.net/ithomer/article/details/6727581 这段时间在学Android应用开发,在想既然是用Java开发的应该很好反编译从而得到源代码吧,google了一下,确实很简单,以下是我的实践过程. 在此郑重声明,贴出来的目的不是为了去破解人家的软件,完全是一种学习的态度,不过好像通过这种方式也可以去汉化一些外国软件.   本文Android反编译教程,测试环境: Win7 Ultimate x64 Ubuntu 12.04 x86_x

Android APK反编译详解(附图) (转至 http://blog.csdn.net/ithomer/article/details/6727581)

本文Android反编译教程,测试环境: Win7 Ultimate x64 Ubuntu 12.04 x86_x64 反编译工具包 下载 (2012-10-10更新) 一.Apk反编译得到Java源代码 下载上述反编译工具包,打开apk2java目录下的dex2jar-0.0.9.9文件夹,内含apk反编译成java源码工具,以及源码查看工具. apk反编译工具dex2jar,是将apk中的classes.dex转化成jar文件 源码查看工具jdgui,是一个反编译工具,可以直接查看反编译后的

[Android]Android APK反编译详解

Android应用程序均用Java开发,通过google的指导下,实现并总结了apk文件反编译过程,不难,需要相应的工具即可. 一.Apk反编译得到Java源代码 下载上述反编译工具包,打开apk2java目录下的dex2jar-0.0.9.9文件夹,内含apk反编译成java源码工具,以及源码查看工具. apk反编译工具dex2jar,是将apk中的classes.dex转化成jar文件 源码查看工具jdgui,是一个反编译工具,可以直接查看反编译后的jar包源代码 dex2jar 和 jdg

Android编译详解之lunch命令 【转】

本文转载自: Android编译详解之lunch命令 (2012-10-08 10:27:55) 转载▼ 标签: it 分类: android内核剖析 Android的优势就在于其开源,手机和平板生产商可以根据自己的硬件进行个性定制自己的手机产品,如小米,LePhone,M9等,因此,在我们在对Android的源码进行定制的时候,很有必要了解下,Android的编译过程. 如果你从来没有做过Android代码的编译,那么最官方的编译过程就是查看Android的官方网站:http://source

Android APK反编译详解

这段时间在学Android应用开发,在想既然是用Java开发的应该很好反编译从而得到源代码吧,google了一下,确实很简单,以下是我的实践过程. 在此郑重声明,贴出来的目的不是为了去破解人家的软件,完全是一种学习的态度,不过好像通过这种方式也可以去汉化一些外国软件.   本文Android反编译教程,测试环境: Win7 Ultimate x64 Ubuntu 12.04 x86_x64 反编译工具包 下载  http://download.csdn.net/detail/sunboy_205

Android # 图片自动适配屏幕,APK反编译详解,Google Maps Android API,Keytool

本文主题:(图片缩放)自动适配屏幕,APK反编译详解,Google Maps Android API,Keytool  (图片缩放)自动适配屏幕支持缩放旋转,自动居中的imageview http://deanandbai-gmail-com.iteye.com/blog/1850329 apk反编译工具 http://pan.baidu.com/s/1qWFcueC Android APK反编译详解 http://blog.csdn.net/ithomer/article/details/67

程序编译详解

程序编译详解 编译程序读取源程序(字符流),对之进行词法和语法的分析,将高级语言指令转换为功能等效的汇编代码,再由汇编程序转换为机器语言,并且按照操作系统对可执行文件格式的要求链接生成可执行程序.总过程如下: C源程序->编译预处理(对源文件进行词法分析和语法分析,确认符合语法规则)->编译(将其翻译成中间代码或汇编代码)->优化程序(对中间代码等进行优化)->汇编程序(把汇编代码翻译成目标机器指令)->链接程序(将相关的目标文件彼此相连接,形成统一的整体)->可执行文

PHP源码编译详解

编译php包:php-5.4.26.tar.bz2 解压php-5.4.26.tar.bz2后,进入php解压目录: ./configure --prefix=/usr/local/php --enable-fpm --enable-debug --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --enable-mbstring --with-curl --with-mysql=/usr/local/mysql/ --wit

GCC 编译详解 (转)

朋友用C调用lua的库,但是不能直接调用源码,必须要编译成静态链接库才可以使用,问学长说是因为要分开编译链接.这就不理解了,于是转一篇讲编译的文章学习一下,补补课… GNU CC(简称为Gcc)是GNU项目中符合ANSI C标准的编译系统,能够编译用C.C++和Object C等语言编写的程序.Gcc不仅功能强大,而且可以编译如C.C++.Object C.Java.Fortran.Pascal.Modula-3和Ada等多种语言,而且Gcc又是一个交叉平台编译器,它能够在当前CPU平台上为多种