免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3083 | 回复: 0
打印 上一主题 下一主题

x86平台编译Android [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-11-18 00:19 |只看该作者 |倒序浏览
今天在公司试着在编译x86 平台的Android源码,目前问题比较多,顺便做下记录,以备查看:
操作步骤如下:
1.设置编译选项为make -j5  TARGET_ARCH=x86 TARGET_PRODUCT=generic  TARGET_SIMULATOR=false TARGET_BUILD_TYPE=release TARGET_OS=linux LOCAL_PRELINK_MODULE=false
2.build/core/envsetup.mk 中 91行 设置为x86(该步骤可以省略)
3.修改build/tools/dexpreopt目录中Android.mk为Android-arm.mk,不编译该模块(该模块以来与emulator)。
make: *** No rule to make target `out/target/product/generic/obj/lib/libdbus.so', needed by `out/target/product/generic/obj/EXECUTABLES/auth-agent_intermediates/LINKED/auth-agent'.  Stop.原因:libdbus.so模块未编译。external/dbus/dbus中mk文件只对TARGET_ARCH = arm时又作用。
4.修改external/dbus/dbus目录中Android.mk,TARGET_ARCH = x86,编译该模块。
system/core/libcutils/memset32.S: Assembler messages:system/core/libcutils/memset32.S:38: Error: unknown pseudo-op: `.fnstart'...system/core/libcutils/memset32.S:93: Error: unknown pseudo-op: `.fnend'make: *** [out/target/product/generic/obj/STATIC_LIBRARIES/libcutils_intermediates/memset32.o] Error 1原因:system/core/libcutils模块在TARGET_SIMULATOR=false时,对arm相关代码有依赖,依赖代码如下:    LOCAL_SRC_FILES := $(commonSources) memset32.S atomic-android-arm.S mq.c \                       ashmem-dev.c    LOCAL_C_INCLUDES := $(KERNEL_HEADERS)
5.修改system/core/libcutils目录中Android.mk中78行(ifneq ($(TARGET_SIMULATOR),true)),暂使用TARGET_SIMULATOR=true编译。
target thumb C: libwpa_client target thumb C: libwpa_client cc1: error: unrecognized command line option "-mabi=aapcs-linux"cc1: error: unrecognized command line option "-mabi=aapcs-linux"target thumb C: libnetutils make: *** [out/target/product/generic/obj/SHARED_LIBRARIES/libwpa_client_intermediates/wpa_ctrl.o] Error 1make: *** Waiting for unfinished jobs....make: *** [out/target/product/generic/obj/SHARED_LIBRARIES/libwpa_client_intermediates/os_unix.o] Error 1原因:不识别的命令行选项-mabi=aapcs-linux
6.修改external/wpa_supplicant/目录中Android.mk 20行,去掉-mabi=aapcs-linux选项.
external/dbus/dbus/dbus-sysdeps-util-unix.c:48:27: error: sys/syslimits.h: No such file or directorymake: *** [out/target/product/generic/obj/SHARED_LIBRARIES/libdbus_intermediates/dbus-sysdeps-util-unix.o] Error 1原因:定义了HAVE_SYS_SYSLIMITS_H该宏,但无法找到sys/syslimits.h头文件。
7.修改external/dbus/config.h中197行,#undef HAVE_SYS_SYSLIMITS_H。
system/core/debuggerd/crashglue.S:5: Error: no such instruction: `ldr r0,=0xa5a50000'system/core/debuggerd/crashglue.S:6: Error: no such instruction: `ldr r1,=0xa5a50001'...system/core/debuggerd/crashglue.S:28: Error: no such instruction: `b .'target arm C: libc make: *** [out/target/product/generic/obj/EXECUTABLES/crasher_intermediates/crashglue.o] Error 1原因:system/core/debuggerd模块依赖于arm.
8.修改system/core/debuggerd模块中的Android.mk.重命名为Android-arm.mk,暂不编译该模块。
9.修改bionic/libc/tools目录下的gensyscalls.py,生成x86架构的相关文件。
  修改bionic/libc目录下的Android.mk文件,设置为x86.
make: *** 没有规则可以创建“out/target/product/generic/obj/SHARED_LIBRARIES/libc_intermediates/arch-x86/bionic/exidx_dynamic.o”需要的目标“bionic/libc/arch    -x86/bionic/exidx_dynamic.c”。 停止。
原因:bionic/libc/arch-x86/bionic目录下无exidx_dynamic.c文件。
10.修改bionic/libc/目录中Android.mk文件,去掉“arch-x86/bionic/exidx_dynamic.c \”。
/usr/include/gnu/stubs-32.h:7:3: error: #error Applications may not define the macro _LIBCIn file included from /usr/include/stdio.h:75,                 from bionic/libc/bionic/malloc_leak.c:30:/usr/include/libio.h:354: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘attribute_hidden’/usr/include/libio.h:355: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘attribute_hidden’/usr/include/libio.h:356: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘attribute_hidden’make: *** [out/target/product/generic/obj/SHARED_LIBRARIES/libc_intermediates/bionic/malloc_leak.o] Error 1原因:bionic/libc/Android.mk中设置了libc_common_cflags := -D_LIBC=1, 与/usr/include/gnu/stubs-32.h有冲突。
11.修改bionic/libc/Android.mk,去掉libc_common_cflags中 -d_LIBC=1.
In file included from bionic/libc/bionic/libc_init_dynamic.c:54:bionic/libc/bionic/pthread_internal.h:45: 错误: expected specifier-qualifier-list before ‘__pthread_cleanup_t’In file included from bionic/libc/bionic/libc_init_dynamic.c:56:bionic/libc/bionic/libc_init_common.h:41: 错误: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘void’bionic/libc/bionic/libc_init_dynamic.c:60: 错误: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘void’make: *** [out/target/product/generic/obj/SHARED_LIBRARIES/libc_intermediates/bionic/libc_init_dynamic.o] 错误 1
原因:暂未调查。
今天就写到这。
待续...
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/84770/showart_1421491.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP