Chinaunix首页 | 论坛 | 博客
  • 博客访问: 522836
  • 博文数量: 86
  • 博客积分: 1076
  • 博客等级: 准尉
  • 技术积分: 1018
  • 用 户 组: 普通用户
  • 注册时间: 2011-11-02 19:15
文章分类

全部博文(86)

文章存档

2013年(15)

2012年(69)

2011年(2)

分类: LINUX

2013-02-18 16:49:00

对于libcurl大家在熟悉不过了,不做过多的介绍,

这是libcurl的官网

http://curl.haxx.se/libcurl/


最近要在android工程中实现http等协议的下载,于是自然想到了libcurl,但是移植它到android还是走了一些弯路。


有很多网友尝试用NDK来编译libcurl,参考了很多资料,并且libcurl自身也有了Android.mk,但是我始终没有编译成功,无奈之下想到了

传统的交叉编译,结合先前从ndk中制作的独立的交叉编译工具链,终于成功了,方便可用。

1、NDK编译的方法可以参考:

http://blog.csdn.net/vrix/article/details/7683212

2、交叉编译

准备好工具链arm-linux-androideabi-4.6.tar.bz2,例如将其解压在/home/work/目录下,在ubuntu机子上,将其加入环境变量,

$vim ~/.bashrc

在最后加上

#for android standalone toolchain

export PATH=/home/work/arm-linux-androideabi-4.6/bin:$PATH

$source ~/.bashrc

然后

$cd curl-7.28.1

$./configure --prefix=/usr/local/android --host=arm-linux-androideabi CC=arm-linux-androideabi-gcc CFLAGS='-Os' --enable-debug  --enable-optimize  --enable-static --disable-ftp --without-zlib  --disable-rtsp --disable-dict --disable-proxy --disable-telnet  --disable-tftp   --disable-pop3   --disable-imap   --disable-smtp   --disable-ipv6  --enable-http   -enable-crypto-auth  --without-gnutls --without-nss --without-ca-bundle

$make -j4

$sudo make install

就可以在/usr/local/android目录下生成libcurl相关的库了,然后可以将其放到你的android工程的jni目录下,以本地库的形式提供,

最好在jni的目录下建一个arm-linux-androideabi目录,将/usr/local/android目录下的内容全部拷贝过去,然后在arm-linux-androideabi

的同级目录下的Android.mk里面指定一下本地库的地址

LIVETVROOT := $(LOCAL_PATH)/liveTV
LOCALLIBROOT := $(LOCAL_PATH)/arm-linux-androideabi

然后使用时在相应的Android.mk中这样指定即可

LOCAL_C_INCLUDES += \
    $(LOCALLIBROOT)/include

LOCAL_LDLIBS := -L$(LOCALLIBROOT)/lib \
    -lcurl


阅读(3514) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~