使用eclipse编译android版本的libcurl


下载curl源代码:http://curl.haxx.se/download.html 

curl是一个著名的开源文件传输协议实现软件,其中包括了HTTP、HTTPS、FTP等多种常用不常用协议的实现。其实,在curl最新版本的官方源代码中已经包括了android的编译文件(Android.mk)在\packages\Android目录下。

首先,我们来读读curl库中Android.mk上的说明。我这里只截取重要的部分:

Note:you must first create a curl_config.h file by running configure in the android environment.

1.使用Ubuntu得到得到curl_config.h和curlbuild.h文件。

我是在虚拟机中安装Ubuntu12.04,进行基本的编程配置,下载NDK的Linux版本。

配置NDK的几个路径(根据自己需要在/ect/profile文件中修改,具体方法自己查询)

export NDK=$HOME/adt/android-ndk-r9d
export TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin
export PATH=$TOOLCHAIN:$PATH 
执行source /ect/profile

进入curl目录下执行下述configure操作

./configure --host=arm-linux --target=arm-linux CC=arm-linux-androideabi-gcc --disable-tftp --disable-sspi --disable-ipv6 --disable-ldaps --disable-ldap --disable-telnet --disable-pop3 --disable-ftp --without-ssl --disable-imap --disable-smtp --disable-pop3 --disable-rtsp --disable-ares --without-ca-bundle --disable-warnings --disable-manual --without-nss --enable-shared --without-zlib --without-random CFLAGS="-nostdlib" CPPFLAGS="-I$NDK/platforms/android-9/arch-arm/usr/include " LDFLAGS="-L$NDK/platforms/android-9/arch-arm/usr/lib/ -lc -ldl"

此时在lib/文件夹下找到生成的curl_config.h,在include/curl/文件夹下找到curlbuild.h

2.在windows上打开eclipse建立一个android应用。

添加文件夹为jni,在文件夹中建立以下文件

Android.mk

LOCAL_PATH:= $(call my-dir)

CFLAGS := -Wpointer-arith -Wwrite-strings -Wunused -Winline \
 -Wnested-externs -Wmissing-declarations -Wmissing-prototypes -Wno-long-long \
 -Wfloat-equal -Wno-multichar -Wsign-compare -Wno-format-nonliteral \
 -Wendif-labels -Wstrict-prototypes -Wdeclaration-after-statement \
 -Wno-system-headers -DHAVE_CONFIG_H

include $(CLEAR_VARS)
include $(LOCAL_PATH)/curl/lib/Makefile.inc

LOCAL_SRC_FILES := $(addprefix curl/lib/,$(CSOURCES))
LOCAL_CFLAGS += $(CFLAGS)
LOCAL_C_INCLUDES += $(LOCAL_PATH)/curl/include/ $(LOCAL_PATH)/curl/lib

LOCAL_COPY_HEADERS_TO := libcurl
LOCAL_COPY_HEADERS := $(addprefix curl/include/curl/,$(HHEADERS))

LOCAL_MODULE:= libcurl

include $(BUILD_STATIC_LIBRARY)

# Build shared library now
# curltest

include $(CLEAR_VARS)

LOCAL_MODULE := curltest
LOCAL_SRC_FILES := curltest.c
LOCAL_STATIC_LIBRARIES := libcurl
LOCAL_C_INCLUDES += $(LOCAL_PATH)/curl/include $(LOCAL_PATH)/curl/lib
include $(BUILD_SHARED_LIBRARY) 
curltest.c(不需要实现代码)

#include <jni.h>
#include "curl/curl.h"

此时将curl.xx源代码解压后命名为curl,放到jni文件夹下面,并将curl_config.h和curlbuild.h文件,分别放到curl/lib/文件夹和curl/include/curl/文件夹下面


3.创建一个NDK_Builder,参考地址http://www.linuxidc.com/Linux/2011-11/47667.htm


这样就可以编程成功libcurl.a文件了。


参考:http://blog.sina.com.cn/s/blog_6244ae4b0100w7oe.html

           http://bloodysofiya.blog.163.com/blog/static/11656234320108704954344/

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值