Fedora16下载编译android源码4.0

来源:互联网 发布:phpo2o源码 编辑:程序博客网 时间:2024/06/09 16:40
            google不断的升级android, 主流的操作系统也在不断的升级,32到64位,版本1.0到2.0,到3.0......, 其实这背后也是这些软件供应商在不断的角力, 在这个迭代的年代,却苦了程序员。最近把Fedora升级到 16, 64bit系统,编译android ICS源码。过程中会遇到不少问题,先总结如下:

           1. 先需要配置安装JDK, 务必下载安装JDK1.6版本,否者编译会遇到意向不到的问题,还是需要按照google官方文档会省不少力气,可惜google官方文档是基于Ubantu

           2. 按照官方文档开始编译

               # cd android_src

               # . build/setenv.sh

               #lunch

               #make

            3. 编译错误解决

               3.1 glibc 32库

                 In file included from /usr/include/features.h:387:0,
                 from /usr/include/stdlib.h:25,
                 from build/tools/acp/acp.c:11:
                 /usr/include/gnu/stubs.h:7:27: 致命错误:gnu/stubs-32.h:没有那个文件或目录

                 #yum install glibc-devel.i686

               3.2  缺少32位的zlib库

                host Executable: aapt (out/host/linux-x86/obj/EXECUTABLES/aapt_intermediates/aapt)
                /usr/bin/ld: skipping incompatible /usr/lib64/libz.so when searching for -lz
                /usr/bin/ld: cannot find -lz
                collect2: ld 返回 1

                #yum install zlib.i686 zlib-devel.i686
               

              host Executable: adb (out/host/linux-x86/obj/EXECUTABLES/adb_intermediates/adb)
              host Executable: adb (out/host/linux-x86/obj/EXECUTABLES/adb_intermediates/adb)
              /usr/bin/ld: skipping incompatible /usr/lib64/libtinfo.so when searching for -ltinfo
              /usr/bin/ld: cannot find -ltinfo
              collect2: ld 返回 1


             #yum install ncurses-devel.i686 ncurses-libs.i686

            host SharedLib: libOpenglRender (out/host/linux-x86/obj/lib/libOpenglRender.so)
            /usr/bin/ld: skipping incompatible /usr/lib64/libX11.so when searching for -lX11
            /usr/bin/ld: cannot find -lX11
            /usr/bin/ld: skipping incompatible /usr/lib64/libX11.so when searching for -lX11
            /usr/bin/ld: cannot find -lX11
           collect2: ld 返回 1
           make: *** [out/host/linux-x86/obj/lib/libOpenglRender.so] 错误 1

          #yum install libX11.i686 libX11-devel.i686

          host StaticLib: libGLcommon (out/host/linux-x86/obj/STATIC_LIBRARIES/libGLcommon_intermediates/libGLcommon.a)
          host SharedLib: libGLES_CM_translator (out/host/linux-x86/obj/lib/libGLES_CM_translator.so)
          /usr/bin/ld: skipping incompatible /usr/lib64/libGL.so when searching for -lGL
         /usr/bin/ld: cannot find -lGL
         collect2: ld 返回 1
         make: *** [out/host/linux-x86/obj/lib/libGLES_CM_translator.so] 错误 1



         #yum install libgle.i686 libgle-devel.i686
         #yum install libGLEW.i686 libGLEWmx.i686
         #ln -sf /usr/lib/libGL.so.1.2 /usr/lib/libGL.so


      
        sh: gperf: 未找到命令
        calling gperf failed: 32512 at ./makeprop.pl line 140.
        make: *** [out/target/product/generic/obj/STATIC_LIBRARIES/libwebcore_intermediates/Source/WebCore/css/CSSPropertyNames.h] 错误 25
        make: *** 正在删除文件“out/target/product/generic/obj/STATIC_LIBRARIES/libwebcore_intermediates/Source/WebCore/css/CSSPropertyNames.h”

        target Generated: libwebcore <= external/webkit/Source/WebCore/html/DocTypeStrings.gperf
        Can't locate Switch.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5  /usr/share/perl5 .) at external/webkit/Source/WebCore/make-hash-tools.pl line 23.
         BEGIN failed--compilation aborted at external/webkit/Source/WebCore/make-hash-tools.pl line 23.


        #yum search perl|grep switch
        #yum install perl-Switch.noarch
        原因是fedora16缺省安装的perf-5.14拿掉了switch.pm模块,所以需要重新安装一下

        顺利打完,收工,分析原因在64bit系统中编译android, 部分代码需要32位的一些库支持,才能顺利编译,因为目标平台现在arm都是32bit.



原创粉丝点击