eclipse编译android版本的libcurl

MrLee 1月前 667 0

下载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/



本文固定链接:http://www.ithtw.com/thread-12215.htm
转载请注明:MrLee 1月前 于 IT十万个为什么 发表
最新回复 (0)
回复
登录发表 or 还没有账号?去注册