curl命令移植android,移植curl到android操作系统

在实验中需要将curl移植到开发板上(android 2.1操作系统)。

之前按照网上的资料,使用交叉编译工具arm-none-linux-gnueabi-gcc交叉编译,并指定为静态编译。编译成功后,将二进制文件拷入到开发板中时,进入所在目录,修改权限为777后,使用命令./curl,显示的错误为:/system/bin/busybox/ash:./curl:command not found。

尝试了多种版本的源码和交叉编译工具后均失败。

原因为:单独编译curl时,仍然是动态编译,curl在使用时,还需要调用内核中的一些动态库。而android操作系统中缺少这些库,因此这种方法不奏效。

解决思路为:将curl源码放入到android源码中,使用curl中的Android.mk作为makefile,并在配置参数时将curl用到的内核库加入,在android根目录下编译。

今天在网上看到一份指导资料,经过尝试后成功,具体方法如下:

1.版本信息:android 2.1 &curl 7.21.4

2.编译过程:

2.1将curl源码放入到android根目录下的external文件夹中,

(1)ANDROID_ROOT=/root/Desktop/ut6410-android2.1-v2.0

(2)PATH="$ANDROID_ROOT/prebuilt/linux-x86/toolchain/i686-unknown-linux-gnu-4.2.1/bin:$PATH"

(3)./configure --host=x86-linux CC=i686-unknown-linux-gnu-gcc --disable-shared CPPFLAGS="-I $ANDROID_ROOT/external/curl/include/ -I $ANDROID_ROOT/external/curl -I $ANDROID_ROOT/out/target/product/eeepc/obj/STATIC_LIBRARIES/libcurl_intermediates -I $ANDROID_ROOT/system/core/include -I $ANDROID_ROOT/hardware/libhardware/include -I $ANDROID_ROOT/hardware/libhardware_legacy/include -I $ANDROID_ROOT/hardware/ril/include -I $ANDROID_ROOT/dalvik/libnativehelper/include -I $ANDROID_ROOT/frameworks/base/include -I $ANDROID_ROOT/frameworks/base/opengl/include -I $ANDROID_ROOT/external/skia/include -I $ANDROID_ROOT/out/target/product/eeepc/obj/include -I $ANDROID_ROOT/bionic/libc/arch-x86/include -I $ANDROID_ROOT/bionic/libc/include -I $ANDROID_ROOT/bionic/libstdc++/include -I $ANDROID_ROOT/bionic/libc/kernel/common -I $ANDROID_ROOT/bionic/libc/kernel/arch-x86 -I $ANDROID_ROOT/bionic/libm/include -I $ANDROID_ROOT/bionic/libm/include/i387 -I $ANDROID_ROOT/bionic/libthread_db/include -I $ANDROID_ROOT/external/openssl/include" CFLAGS="-fno-exceptions -Wno-multichar -march=i686 -m32 -fPIC -include $ANDROID_ROOT/system/core/include/arch/target_linux-x86/AndroidConfig.h -m32 -DANDROID -fmessage-length=0 -fno-strict-aliasing -Wno-unused -Winit-self -Wpointer-arith -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -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" LIB="$ANDROID_ROOT/prebuilt/linux-x86/toolchain/i686-unknown-linux-gnu-4.2.1/lib/gcc/i686-unknown-linux-gnu/4.2.1/libgcc.a $ANDROID_ROOT/prebuilt/linux-x86/toolchain/i686-unknown-linux-gnu-4.2.1/lib/gcc/i686-unknown-linux-gnu/4.2.1/crtbegin.o $ANDROID_ROOT/prebuilt/linux-x86/toolchain/i686-unknown-linux-gnu-4.2.1/lib/gcc/i686-unknown-linux-gnu/4.2.1/crtend.o"

2.2回到android根目录,make curl

耐心等待半个小时吧,就可以看到编译成功了!!

如下图:

0b3a684b2ec9605d5c04b73bd80a2955.png

3.根据结果提示,进入out/target文件夹中寻找,最后编译出的curl应该为1.5M。将它拷入android文件系统中,直接运行,成功鸟~~

以及curl源码中的Android.mk指导。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值