移植curl到android移植教程平台上时,configure遇到错误,求助

android源代码中repo升级后出现的问题
早上在电脑上同步android的源代码(使用 repo sync),提示&A new version of repo is available&,于是了最新的repo(curl https://dl-/dl/googlesource/git-repo/repo & repo)
再次执行repo还是同样的提示,仔细看看下面还有几行
error: cannot run gpg: No such file or directory
error: could not run gpg.
error: could not verify the tag 'v1.12.0'
原来这才是root cause(经查repo是可以自我升级的),杯具的mac确实没有gpg这个命令
google找到了mac下面的gpg(https://www.gpgtools.org/),安装完成后再次执行repo sync又出现的新的错误
gpg: Can't check signature: No public key
error: could not verify the tag 'v1.12.0'
求助google再次找到了答案
&出错原因是曾使用repo sync从其它库sync过代码,删掉~/.repoconfig即可&
您对本文章有什么意见或着疑问吗?请到您的关注和建议是我们前行的参考和动力&&
您的浏览器不支持嵌入式框架,或者当前配置为不显示嵌入式框架。移植curl到android操作系统 - maxwell2place - 51Testing软件测试网 51Testing软件测试网-中国软件测试人的精神家园 - Powered by X-Space
移植curl到android操作系统
& 14:10:15
/ 个人分类:
  在实验中需要将curl移植到开发板上( 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.42.编译过程: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耐心等待半个小时吧,就可以看到编译成功了!!如下图:3.根据结果提示,进入out/target文件夹中寻找,最后编译出的curl应该为1.5M。将它拷入android文件系统中,直接运行,成功鸟~~感谢以及curl源码中的Android.mk指导。当前位置: >
> Android移植libcurl和libsqlite3移植libcurl:1、网上下载curl-7
Android移植libcurl和libsqlite3移植libcurl:1、网上下载curl-7
xiaolanzhu & at
Android移植libcurl和libsqlite3移植libcurl:
1、网上下载curl-7.32.0.tar.gz,解压;
  2、下载主目录下configure,因为接下来编译的时候要用到curl_config.h,这个是在configure时生成的:
  ./configure --host=arm-linux CC=arm-linux-gnueabi-gcc
3、在主目录下编写Android.mk:
  LOCAL_PATH := $(call my-dir)
CURL_TOP := $(LOCAL_PATH)
include $(CLEAR_VARS)
include $(CURL_TOP)/lib/Android.mk
4、在lib目录下编写Android.mk,因为如果要生成libcurl.so,如果生成curl可执行文件的话,要把src下面也加上:
  LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES:= file.c timeval.c base64.c hostip.c progress.c formdata.c
cookie.c o.c transfer.c strequal.c easy.c security.c krb4.c
curl_fnmatch.c fileinfo.c ftplistparser.c wildcard.c krb5.c
memdebug.c ate.c inet_pton.c strtoofft.c strerror.c amigaos.c
hostasyn.c hostip4.c hostip6.c hostsyn.c inet_ntop.c parsedate.c
select.c gtls.c sslgen.c tftp.c splay.c strdup.c socks.c ssh.c nss.c
qssl.c rawstr.c curl_addrinfo.c socks_gssapi.c socks_sspi.c
curl_sspi.c slist.c nonblock.c curl_memrchr.c imap.c pop3.c smtp.c
pingpong.c rtsp.c curl_threads.c warnless.c hmac.c polarssl.c
polarssl_threadlock.c curl_rtmp.c openldap.c curl_gethostname.c
gopher.c axtls.c idn_win32.c b.c curl_ntlm_core.c curl_ntlm_msgs.c
curl_sasl.c curl_schannel.c curl_multibyte.c curl_darwinssl.c
hostcheck.c bundles.c conncache.c pipeline.c dotdot.c x509asn1.c
LOCAL_C_INCLUDES :=./
$(LOCAL_PATH)/../include
/opt/arm-linux-gnueabi/arm-linux-gnueabi/libc/usr/include/ #
/opt/arm-linux-gnueabi/arm-linux-gnueabi/libc/usr/include/arm-linux-gnueabi/
LOCAL_CFLAGS :=
-DHAVE_CONFIG_H -I../include/curl -I../include -I../include -I../lib -I../lib -DBUILDING_LIBCURL -DCURL_HIDDEN_SYMBOLS -fvisibility=hidden -O2 -Wno-system-headers
-fPIC -DPIC
LOCAL_LDLIBS:= -lc -ldl
LOCAL_MODULE:=libcurl
include $(BUILD_SHARED_LIBRARY)
5、接下来用ndk编译或者copy到源码环境中编译,会出现如下错误:
  /home/usrhome/johnny.he/androidworkspace/jni_compile/jni_curl-7.32.2/jni/lib/if2ip.c:44:23: fatal error: ifaddrs.h: No such file or directory
compilation terminated.
在if2ip.c中我们发现ifaddrs.h是在宏HAVE_IFADDRS_H中的,在lib/curl_config.h中把这个宏注释掉就ok了,
再编译会有:
  /home/usrhome/johnny.he/androidworkspace/jni_compile/jni_curl-7.32.2/jni/lib/if2ip.c:47:23: fatal error: stropts.h: No such file or directory
compilation terminated.
同样在在lib/curl_config.h中把HAVE_STROPTS_H宏注释掉就ok了,
再编译,还有错误:
  /home/usrhome/johnny.he/androidworkspace/jni_compile/jni_curl-7.32.2/jni/lib/if2ip.c: In function 'Curl_if_is_interface_name':
/home/usrhome/johnny.he/androidworkspace/jni_compile/jni_curl-7.32.2/jni/lib/if2ip.c:75:47: error: dereferencing pointer to incomplete type
/home/usrhome/johnny.he/androidworkspace/jni_compile/jni_curl-7.32.2/jni/lib/if2ip.c:76:29: error: dereferencing pointer to incomplete type
/home/usrhome/johnny.he/androidworkspace/jni_compile/jni_curl-7.32.2/jni/lib/if2ip.c: In function 'Curl_if2ip':
/home/usrhome/johnny.he/androidworkspace/jni_compile/jni_curl-7.32.2/jni/lib/if2ip.c:97:47: error: dereferencing pointer to incomplete type
/home/usrhome/johnny.he/androidworkspace/jni_compile/jni_curl-7.32.2/jni/lib/if2ip.c:98:15: error: dereferencing pointer to incomplete type
/home/usrhome/johnny.he/androidworkspace/jni_compile/jni_curl-7.32.2/jni/lib/if2ip.c:99:17: error: dereferencing pointer to incomplete type
/home/usrhome/johnny.he/androidworkspace/jni_compile/jni_curl-7.32.2/jni/lib/if2ip.c:100:33: error: dereferencing pointer to incomplete type
/home/usrhome/johnny.he/androidworkspace/jni_compile/jni_curl-7.32.2/jni/lib/if2ip.c:127:51: error: dereferencing pointer to incomplete type
/home/usrhome/johnny.he/androidworkspace/jni_compile/jni_curl-7.32.2/jni/lib/if2ip.c:135:36: error: dereferencing pointer to incomplete type
make: *** [/home/usrhome/johnny.he/androidworkspace/jni_compile/jni_curl-7.32.2/obj/local/armeabi/objs/curl/if2ip.o] Error 1
找到if2ip.c文件的47行,发现Curl_if_is_interface_name()函数是在HAVE_GETIFADDRS中的,同样在lib/curl_config.h中把这个宏注释掉就ok。
再编译就生成了liburl.so了。
移植libsqlite3
1、网上下载sqlite-autoconf-3080002.tar.gz,解压。
2、在主目录中写Android.mk:
  LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES:=
LOCAL_C_INCLUDES :=./
LOCAL_CFLAGS := -DPACKAGE_NAME=\&sqlite\& -DPACKAGE_TARNAME=\&sqlite\& -DPACKAGE_VERSION=\&3.8.0.2\& &-DPACKAGE_STRING=\&sqlite 3.8.0.2\&& -DPACKAGE_BUGREPORT=
\&\& -DPACKAGE_URL=\&\& -DPACKAGE=\&sqlite\& -DVERSION=\&3.8.0.2\& -D_FILE_OFFSET_BITS=64 -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -
DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -
DHAVE_DLFCN_H=1 -DLT_OBJDIR=\&.libs/\& -DHAVE_FDATASYNC=1 -DHAVE_USLEEP=1 -DHAVE_LOCALTIME_R=1 -DHAVE_GMTIME_R=1 -DHAVE_DECL_STRERROR_R=1 -
DHAVE_STRERROR_R=1 -I. -D_REENTRANT=1 -DSQLITE_THREADSAFE=1 -DSQLITE_ENABLE_FTS3 -DSQLITE_ENABLE_RTREE -g -O2
LOCAL_LDLIBS:= -lc -ldl
LOCAL_MODULE:=libsqlite3
include $(BUILD_SHARED_LIBRARY)
本问题标题:
本问题地址:
温馨提示:本问题已经关闭,不能解答。
暂无合适的专家
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&&&湘教QS2-164&&增值电信业务经营许可证湘B2-}

我要回帖

更多关于 android移植教程 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信