android 源码编译 问题 列表

简介: 近期在进行android源码编译,环境搭建神码痛苦不堪,在编译过程中更是错误不断,想想在windows环境下习惯了,切换到ubuntu上来操作,真真到一时难以适应。    各位看官,下面问题是出现在-------环境已经正确配置完成,执行make时出现的错误以及解决办法。

   近期在进行android源码编译,环境搭建神码痛苦不堪,在编译过程中更是错误不断,想想在windows环境下习惯了,切换到ubuntu上来操作,真真到一时难以适应。

   各位看官,下面问题是出现在-------环境已经正确配置完成,执行make时出现的错误以及解决办法。希望能对大家有所帮助。

    首先说一下,目前环境搭建/系统版本/android版本,

      环境搭建 :大家可以按照官网, source.android.com ,执行。

      系统版本: ubuntu 12.10  32位系统

  android版本 4.0.1r1

  jdk:1.6(这里大家注意,编译android )

      注:1.因为我安装系统语言位中文,如果大家到系统版本位英文 提示错误信息中 “错误” 会为“error”。

             2.以下说多少行,可能会不一样,可以通过查找定位。我使用的grepedit,.

   一. make: *** [out/host/linux-x86/obj/EXECUTABLES/emugen_intermediates/main.o] 错误 1

       或者 make: *** [out/host/linux-x86/obj/EXECUTABLES/emugen_intermediates/main.o] error 1

        解决办法: 需要在  development/tools/emulator/opengl/host/tools/emugen/main.cpp

            在声明中增加一条头文件声明

            #include <getopt.h>

二. frameworks/base/include/utils/KeyedVector.h:193:31: 错误: ‘indexOfKey’ was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]

   或者 frameworks/base/include/utils/KeyedVector.h:193:31: error: ‘indexOfKey’ was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]

   解决办法:在 development/tools/emulator/opengl/Android.mk

    增加  '-fpermissive' 到25行:
       EMUGL_COMMON_CFLAGS := -DWITH_GLES2 -fpermissive

三.  make: *** [out/host/linux-x86/obj/EXECUTABLES/aapt_intermediates/AaptAssets.o] 错误 1

    或者 make: *** [out/host/linux-x86/obj/EXECUTABLES/aapt_intermediates/AaptAssets.o] Error 1

   解决办法:  frameworks/base/tools/aapt/Android.mk

       在第31行增加:
       LOCAL_CFLAGS += -Wno-format-y2k -fpermissive

四. make: *** [out/host/linux-x86/obj/EXECUTABLES/obbtool_intermediates/Main.o] 错误 1

    make: *** [out/host/linux-x86/obj/EXECUTABLES/obbtool_intermediates/Main.o] error 1

    解决办法:系版本高,在配置环境的时候,gcc安装了高到版本,所以gcc版本太高导致,需要降低gcc版本级别。

    ubuntu 32bit系统下安装gcc 4.4的最好方法是仅用以下两条命令,不需要其它命令,否则编译时可能会出错。

     sudo apt-get install gcc-4.4

    sudo apt-get install g++-4.4

   操作过程见:

 gcc降级:

  sudo rm -rf /usr/bin/gcc

  sudo ln -s /usr/bin/gcc-4.4 /usr/bin/gcc

   gcc -v

g++降级

   sudo rm -rf /usr/bin/g++

  sudo ln -s /usr/bin/g++-4.4 /usr/bin/g++

   g++ -v 

演示过程:

View Code
 1 cxl@cxl:/usr/lib$ gcc -v
 2 使用内建 specs。
 3 COLLECT_GCC=gcc
 4 COLLECT_LTO_WRAPPER=/usr/lib/gcc/i686-linux-gnu/4.7/lto-wrapper
 5 目标:i686-linux-gnu
 6 配置为:../src/configure -v --with-pkgversion='Ubuntu/Linaro 4.7.2-2ubuntu1' --with-bugurl=file:///usr/share/doc/gcc-4.7/README.Bugs --enable-languages=c,c++,go,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.7 --enable-shared --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.7 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --enable-plugin --enable-objc-gc --enable-targets=all --disable-werror --with-arch-32=i686 --with-tune=generic --enable-checking=release --build=i686-linux-gnu --host=i686-linux-gnu --target=i686-linux-gnu
 7 线程模型:posix
 8 gcc 版本 4.7.2 (Ubuntu/Linaro 4.7.2-2ubuntu1) 
 9 cxl@cxl:/usr/lib$ ls -l gcc
10 总用量 8
11 drwxr-xr-x 3 root root 4096  4月  1 21:25 i586-mingw32msvc
12 drwxr-xr-x 4 root root 4096  4月  2 10:46 i686-linux-gnu
13 cxl@cxl:/usr/lib$ sudo mv gcc gcc.bak
14 cxl@cxl:/usr/lib$ sudo ln -s gcc-4.4 gcc
15 cxl@cxl:/usr/lib$ gcc -v
16 使用内建 specs。
17 COLLECT_GCC=gcc
18 目标:i686-linux-gnu
19 配置为:../src/configure -v --with-pkgversion='Ubuntu/Linaro 4.7.2-2ubuntu1' --with-bugurl=file:///usr/share/doc/gcc-4.7/README.Bugs --enable-languages=c,c++,go,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.7 --enable-shared --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.7 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --enable-plugin --enable-objc-gc --enable-targets=all --disable-werror --with-arch-32=i686 --with-tune=generic --enable-checking=release --build=i686-linux-gnu --host=i686-linux-gnu --target=i686-linux-gnu
20 线程模型:posix
21 gcc 版本 4.7.2 (Ubuntu/Linaro 4.7.2-2ubuntu1) 
22 cxl@cxl:/usr/lib$ clear
23 
24 cxl@cxl:/usr/lib$ ls -l gcc*
25 lrwxrwxrwx 1 root root    7  4月  2 11:05 gcc -> gcc-4.4
26 
27 gcc.bak:
28 总用量 8
29 drwxr-xr-x 3 root root 4096  4月  1 21:25 i586-mingw32msvc
30 drwxr-xr-x 4 root root 4096  4月  2 10:46 i686-linux-gnu
31 cxl@cxl:/usr/lib$ gcc -v
32 使用内建 specs。
33 COLLECT_GCC=gcc
34 目标:i686-linux-gnu
35 配置为:../src/configure -v --with-pkgversion='Ubuntu/Linaro 4.7.2-2ubuntu1' --with-bugurl=file:///usr/share/doc/gcc-4.7/README.Bugs --enable-languages=c,c++,go,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.7 --enable-shared --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.7 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --enable-plugin --enable-objc-gc --enable-targets=all --disable-werror --with-arch-32=i686 --with-tune=generic --enable-checking=release --build=i686-linux-gnu --host=i686-linux-gnu --target=i686-linux-gnu
36 线程模型:posix
37 gcc 版本 4.7.2 (Ubuntu/Linaro 4.7.2-2ubuntu1) 
38 cxl@cxl:/usr/lib$ rm -rf /usr/bin/gcc
39 rm: 无法删除"/usr/bin/gcc": 权限不够
40 cxl@cxl:/usr/lib$ sudo rm -rf /usr/bin/gcc
41 cxl@cxl:/usr/lib$ sudo ln -s /usr/bin/gcc-4.4 /usr/bin/gcc
42 cxl@cxl:/usr/lib$ gcc -v
43 Using built-in specs.
44 Target: i686-linux-gnu
45 Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 4.4.7-2ubuntu1' --with-bugurl=file:///usr/share/doc/gcc-4.4/README.Bugs --enable-languages=c,c++,fortran --prefix=/usr --program-suffix=-4.4 --enable-shared --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.4 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-targets=all --disable-werror --with-arch-32=i686 --with-tune=generic --enable-checking=release --build=i686-linux-gnu --host=i686-linux-gnu --target=i686-linux-gnu
46 Thread model: posix
47 gcc version 4.4.7 (Ubuntu/Linaro 4.4.7-2ubuntu1) 

 

View Code
cxl@cxl:/usr/lib$ g++ -v
使用内建 specs。
COLLECT_GCC=g++
目标:i686-linux-gnu
配置为:../src/configure -v --with-pkgversion='Ubuntu/Linaro 4.7.2-2ubuntu1' --with-bugurl=file:///usr/share/doc/gcc-4.7/README.Bugs --enable-languages=c,c++,go,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.7 --enable-shared --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.7 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --enable-plugin --enable-objc-gc --enable-targets=all --disable-werror --with-arch-32=i686 --with-tune=generic --enable-checking=release --build=i686-linux-gnu --host=i686-linux-gnu --target=i686-linux-gnu
线程模型:posix
gcc 版本 4.7.2 (Ubuntu/Linaro 4.7.2-2ubuntu1) 
cxl@cxl:/usr/lib$ sudo rm -rf /usr/bin/g++
cxl@cxl:/usr/lib$ sudo ln -s /usr/bin/g++-4.4 /usr/bin/g++
cxl@cxl:/usr/lib$ g++ -v
Using built-in specs.
Target: i686-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 4.4.7-2ubuntu1' --with-bugurl=file:///usr/share/doc/gcc-4.4/README.Bugs --enable-languages=c,c++,fortran --prefix=/usr --program-suffix=-4.4 --enable-shared --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.4 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-targets=all --disable-werror --with-arch-32=i686 --with-tune=generic --enable-checking=release --build=i686-linux-gnu --host=i686-linux-gnu --target=i686-linux-gnu
Thread model: posix
gcc version 4.4.7 (Ubuntu/Linaro 4.4.7-2ubuntu1)

 

五.make: *** [out/host/linux-x86/obj/STATIC_LIBRARIES/libutils_intermediates/AssetManager.o] 错误 1

    或者 make: *** [out/host/linux-x86/obj/STATIC_LIBRARIES/libutils_intermediates/AssetManager.o] Error 1
   
    解决办法:在 frameworks/base/libs/utils/Android.mk
   
  在第60行后面增加-fpermissive:   
    
       LOCAL_CFLAGS += -DLIBUTILS_NATIVE=1 $(TOOL_CFLAGS) -fpermissive
 
六. make: *** [out/host/linux-x86/obj/EXECUTABLES/grxmlcompile_intermediates/grxmlcompile.o] 错误 1
    或者 make: *** [out/host/linux-x86/obj/EXECUTABLES/grxmlcompile_intermediates/grxmlcompile.o] Error 1
解决办法:cd external/srec
   复制拷贝下面的命令到终端:
     wget " https://github.com/CyanogenMod/android_external_srec/commit/4d7ae7b79eda47e489669fbbe1f91ec501d42fb2.diff"
     patch -p1 < 4d7ae7b79eda47e489669fbbe1f91ec501d42fb2.diff
    rm -f 4d7ae7b79eda47e489669fbbe1f91ec501d42fb2.diff
    cd ../..
 
七. make: *** [/home/arun/cm10.1/out/target/product/s100/obj/STATIC_LIBRARIES/libwebcore_intermediates/Source/WebCore/bindings/V8CSSCharsetRule.h] 错误 1
   或者make: *** [/home/arun/cm10.1/out/target/product/s100/obj/STATIC_LIBRARIES/libwebcore_intermediates/Source/WebCore/bindings/V8CSSCharsetRule.h] Error 1
   解决办法:sudo apt-get install libdigest-md5-file-perl
 
八. make: *** [out/host/linux-x86/obj/EXECUTABLES/acp_intermediates/acp.o] 错误 1
     或者 make: *** [out/host/linux-x86/obj/EXECUTABLES/acp_intermediates/acp.o] error 1
  解决办法:

 
 

 

 

 

 

 

 


 

目录
相关文章
|
4月前
|
Java Android开发 C++
Android Studio JNI 使用模板:c/cpp源文件的集成编译,快速上手
本文提供了一个Android Studio中JNI使用的模板,包括创建C/C++源文件、编辑CMakeLists.txt、编写JNI接口代码、配置build.gradle以及编译生成.so库的详细步骤,以帮助开发者快速上手Android平台的JNI开发和编译过程。
288 1
|
2月前
|
Linux API 开发工具
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
ijkplayer是由B站研发的移动端播放器,基于FFmpeg 3.4,支持Android和iOS。其源码托管于GitHub,截至2024年9月15日,获得了3.24万星标和0.81万分支,尽管已停止更新6年。本文档介绍了如何在Linux环境下编译ijkplayer的so库,以便在较新的开发环境中使用。首先需安装编译工具并调整/tmp分区大小,接着下载并安装Android SDK和NDK,最后下载ijkplayer源码并编译。详细步骤包括环境准备、工具安装及库编译等。更多FFmpeg开发知识可参考相关书籍。
95 0
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
|
2月前
|
编译器 Android开发
配置环境变量,使CMakeLists.txt可直接使用Android NDK工具链编译项目
配置环境变量,使CMakeLists.txt可直接使用Android NDK工具链编译项目
|
2月前
|
Ubuntu Shell API
Ubuntu 64系统编译android arm64-v8a 的openssl静态库libssl.a和libcrypto.a
Ubuntu 64系统编译android arm64-v8a 的openssl静态库libssl.a和libcrypto.a
|
4月前
|
Android开发 Docker 容器
docker中编译android aosp源码,出现Build sandboxing disabled due to nsjail error
在使用Docker编译Android AOSP源码时,如果遇到"Build sandboxing disabled due to nsjail error"的错误,可以通过在docker run命令中添加`--privileged`参数来解决权限不足的问题。
727 1
|
4月前
|
Java Android开发 芯片
使用Android Studio导入Android源码:基于全志H713 AOSP,方便解决编译、编码问题
本文介绍了如何将基于全志H713芯片的AOSP Android源码导入Android Studio以解决编译和编码问题,通过操作步骤的详细说明,展示了在Android Studio中利用代码提示和补全功能快速定位并修复编译错误的方法。
146 0
使用Android Studio导入Android源码:基于全志H713 AOSP,方便解决编译、编码问题
|
4月前
|
API 开发工具 Android开发
Android Studio:解决AOSP自编译framework.jar引用不到的问题
在Android Studio中解决AOSP自编译framework.jar引用问题的几种方法,包括使用相对路径、绝对路径和通过`${project.rootDir}`动态获取路径的方法,以避免硬编码路径带来的配置问题。
272 0
Android Studio:解决AOSP自编译framework.jar引用不到的问题
|
4月前
|
搜索推荐 Android开发
学习AOSP安卓系统源代码,需要什么样的电脑?不同配置的电脑,其编译时间有多大差距?
本文分享了不同价位电脑配置对于编译AOSP安卓系统源代码的影响,提供了从6000元到更高价位的电脑配置实例,并比较了它们的编译时间,以供学习AOSP源代码时电脑配置选择的参考。
264 0
学习AOSP安卓系统源代码,需要什么样的电脑?不同配置的电脑,其编译时间有多大差距?
|
4月前
|
Java Android开发
解决Android编译报错:Unable to make field private final java.lang.String java.io.File.path accessible
解决Android编译报错:Unable to make field private final java.lang.String java.io.File.path accessible
514 1
|
4月前
|
Ubuntu 开发工具 Android开发
Repo下载、编译AOSP源码:基于Ubuntu 21.04,android-12.1.0_r27
文章记录了作者在Ubuntu 21.04服务器上配置环境、下载并编译基于Android 12.1.0_r27版本的AOSP源码的过程,包括解决编译过程中遇到的问题和错误处理方法。
212 0