• Android文件系统编译出错记录


    错误1:

    注意:external/protobuf/java/src/main/java/com/google/protobuf/GeneratedMessageLite.java 使用了未经检查或不安全的操作。

    注意:要了解详细信息,请使用 -Xlint:unchecked 重新编译。
    注意:external/protobuf/java/src/main/java/com/google/protobuf/micro/CodedInputStreamMicro.java 使用了未经检查或不安全的操作。
    注意:要了解详细信息,请使用 -Xlint:unchecked 重新编译。
    Generated: (out/target/product/generic/android-info.txt)
    host C: acp <= build/tools/acp/acp.c
    host C++: libhost <= build/libs/host/pseudolocalize.cpp
    host C: libhost <= build/libs/host/CopyFile.c
    <命令行>:0:0: 警告: “_FORTIFY_SOURCE”重定义 [默认启用]
    <built-in>:0:0: 附注: 这是先前定义的位置
    <命令行>:0:0: 警告: “_FORTIFY_SOURCE”重定义 [默认启用]
    <built-in>:0:0: 附注: 这是先前定义的位置
    In file included from build/libs/host/CopyFile.c:11:0:
    build/libs/host/include/host/CopyFile.h:5:22: 致命错误: sys/stat.h:没有那个文件或目录
    编译中断。
    In file included from /usr/include/stdlib.h:25:0,
                     from build/tools/acp/acp.c:11:
    /usr/include/features.h:323:26: 致命错误: bits/predefs.h:没有那个文件或目录
    编译中断。
    make: *** [out/host/linux-x86/obj/STATIC_LIBRARIES/libhost_intermediates/CopyFile.o] 错误 1
    make: *** 正在等待未完成的任务....
    make: *** [out/host/linux-x86/obj/EXECUTABLES/acp_intermediates/acp.o] 错误 1
    <命令行>:0:0: 警告: “_FORTIFY_SOURCE”重定义 [默认启用]
    <built-in>:0:0: 附注: 这是先前定义的位置
    In file included from /usr/include/c++/4.6/x86_64-linux-gnu/32/bits/os_defines.h:40:0,
                     from /usr/include/c++/4.6/x86_64-linux-gnu/32/bits/c++config.h:392,
                     from /usr/include/c++/4.6/string:40,
                     from build/libs/host/include/host/pseudolocalize.h:4,
                     from build/libs/host/pseudolocalize.cpp:1:
    /usr/include/features.h:323:26: 致命错误: bits/predefs.h:没有那个文件或目录
    编译中断。

    make: *** [out/host/linux-x86/obj/STATIC_LIBRARIES/libhost_intermediates/pseudolocalize.o] 错误 1

     

    注意:某些输入文件使用或覆盖了已过时的 API。
    注意:要了解详细信息,请使用 -Xlint:deprecation 重新编译。
    注意:某些输入文件使用了未经检查或不安全的操作。

    注意:要了解详细信息,请使用 -Xlint:unchecked 重新编译。

    解决方法:sudo apt-get install libc6-dev-i386

    http://www.blogjava.net/ZircoN/archive/2011/11/13/363452.html

    错误2:

    frameworks/base/libs/utils/RefBase.cpp: 在成员函数‘void android::RefBase::weakref_type::trackMe(bool, bool)’中:
    frameworks/base/libs/utils/RefBase.cpp:483:67: 错误: 将‘const android::RefBase::weakref_impl’作为‘void android::RefBase::weakref_impl::trackMe(bool, bool)’的‘this’实参时丢弃了类型限定 [-fpermissive]
    make: *** [out/host/linux-x86/obj/STATIC_LIBRARIES/libutils_intermediates/RefBase.o] 错误 1
    make: *** 正在等待未完成的任务....
    frameworks/base/libs/utils/ResourceTypes.cpp: 在成员函数‘void android::ResTable::print(bool) const’中:
    frameworks/base/libs/utils/ResourceTypes.cpp:4369:84: 警告: 将一个整数转换为大小不同的指针 [-Wint-to-pointer-cast]

    frameworks/base/libs/utils/ResourceTypes.cpp:4375:43: 警告: 将一个整数转换为大小不同的指针 [-Wint-to-pointer-cast]

    参考网上的解决方法:

    $ gedit frameworks/base/libs/utils/Android.mk

    将下面一行

    LOCAL_CFLAGS += -DLIBUTILS_NATIVE=1 $(TOOL_CFLAGS)

    改成

    LOCAL_CFLAGS += -DLIBUTILS_NATIVE=1 $(TOOL_CFLAGS) –fpermissive

    http://www.blogjava.net/ZircoN/archive/2011/11/13/363452.html

    问题并没有解决,反而又出现了新的错误:

    host C++: libutils <= frameworks/base/libs/utils/Asset.cpp
    g++: –fpermissive:没有那个文件或目录
    注意:某些输入文件使用或覆盖了已过时的 API。
    注意:要了解详细信息,请使用 -Xlint:deprecation 重新编译。
    注意:某些输入文件使用了未经检查或不安全的操作。
    注意:要了解详细信息,请使用 -Xlint:unchecked 重新编译。
    make: *** [out/host/linux-x86/obj/STATIC_LIBRARIES/libutils_intermediates/Asset.o] 错误 1
    make: *** 正在删除文件“out/host/linux-x86/obj/STATIC_LIBRARIES/libutils_intermediates/Asset.o”

    make: *** 正在等待未完成的任务....

    这个错误主要是gcc版本过高引起的:最终解决办法是:

    11.10的gcc版本过高

    http://hi.baidu.com/designhouse/blog/item/fec5cdbf8d6a231618d81fc1.html)

    ubuntu 11.10的gcc版本是4.6.1,版本太高,编译android时出错,要把gcc版本改为4.4.3。

    通过gcc -v命令可以发现gcc库在/usr/lib/gcc/i686-linux-gnu目录下,该目录下有当前系统支持的各种版本gcc库 。在安装gcc 4.4前该目录下是没有4.4目录的,安装gcc 4.4后该目录下就会多出4.4这个目录,且该4.4目录下有各种相应库文件。

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

    sudo apt-get install gcc-4.4

    sudo apt-get install g++-4.4

     

     
    装完后在/usr/bin目录下

    $ ls -l gcc*

    lrwxrwxrwx 1 root root      7 2011-10-29 09:11 gcc -> gcc-4.6

    -rwxr-xr-x 1 root root 224544 2011-10-06 05:47 gcc-4.4

    -rwxr-xr-x 1 root root 302104 2011-09-17 05:43 gcc-4.6

    发现gcc 链接到gcc-4.6,  需要将它改为链接到gcc-4.4 :

    sudo mv gcc gcc.bak

    sudo ln -s gcc-4.4 gcc

    $ls -l g++*

    sudo -s

    mv g++-4.4 g++

    g++ -v

     

     

    错误3:

    g++: g++: selected multilib '32' not installed
    selected multilib '32' not installed
    make: *** [out/host/linux-x86/obj/EXECUTABLES/aidl_intermediates/aidl] 错误 1
    make: *** 正在等待未完成的任务....
    make: *** [out/host/linux-x86/obj/lib/libESR_Portable.so] 错误 1

    解决方法:

    输入:sudo apt-get install gcc-multilib

    sudo apt-get install g++-multilib后出现新问题:

     

    g++: g++: host SharedLib: libfst (out/host/linux-x86/obj/lib/libfst.so)
    g++: selected multilib '32' not installedselected multilib '32' not installed

    selected multilib '32' not installed
    make: *** [out/host/linux-x86/obj/EXECUTABLES/aidl_intermediates/aidl] 错误 1
    make: *** 正在等待未完成的任务....
    make: *** [out/host/linux-x86/obj/lib/libESR_Portable.so] 错误 1

    make: *** [out/host/linux-x86/obj/lib/libfst.so] 错误 1

    解决方法

     

     sudo apt-get install libc6-dev ia32-libs lib32ncurses5-dev x11proto-core-dev libx11-dev lib32readline-gplv2-dev lib32z-dev libgl1-mesa-dev mingw32 tofrodos python-markdown libxml2-utils

    sudo apt-get install g++-4.4-multilib

    错误4:

     


    Could not load 'clearsilver-jni'
    java.library.path = out/host/linux-x86/lib
    Could not load 'clearsilver-jni'
    java.library.path = out/host/linux-x86/lib
    make: *** [out/target/common/docs/api-stubs-timestamp] 错误 45
    make: *** 正在等待未完成的任务....
    make: *** [out/target/common/docs/doc-comment-check-timestamp] 错误 45

    解决方法:

    这是由于clearsilver 在编译时如果检测到使用Java JDK 6,就使用64位编译。要避开此错误,需要修改下面四个文件:

    * external/clearsilver/cgi/Android.mk
    * external/clearsilver/java-jni/Android.mk
    * external/clearsilver/util/Android.mk
    * external/clearsilver/cs/Android.mk

    把这四个Makefile中的下列语句注掉即可:

    # This forces a 64-bit build for Java6
    # Comment by Easwy
    # LOCAL_CFLAGS += -m64
    # LOCAL_LDFLAGS += -m64

    然后在external/clearsilver目录中执行一下make clean,然后回到项目根目录,继续make即可。

    当编译完成时,生成的image文件放在out/target/product/generic目录中。


    gedit /root/.bashrc
    export PATH=/root/android/mydroid/out/host/linux-x86/bin:$PATH
    export ANDROID_PRODUCT_OUT=/root/android/mydroid/out/target/product/generic
    export ANDROID_SWT=/root/android/mydroid/out/host/linux-x86/framework

    在源码目录下的out/target/product/generic/目录下运行
    emulator -image system.img -data userdata.img -ramdisk ramdisk.img 命令

    错误5:

     emulator

    NAND: could not write file system.img, File exists

     

     

     

    编译android4.0遇到gcc和g++编译器的问题解决方法

    572人阅读 评论(0) 收藏 举报

    很多人在编译android4.0中可能遇到一些列问题,比如说其中一个就是GCC版本过高。

    /usr/include/features.h:323:26: 致命错误: bits/predefs.h:没有那个文件或目录

    编译中断。
    make: *** [out/host/linux-x86/obj/EXECUTABLES/mkbootfs_intermediates/mkbootfs.o] 错误 1
    make: *** 正在等待未完成的任务….
    In file included from /usr/include/stdlib.h:25:0,
    from build/tools/acp/acp.c:11:
    /usr/include/features.h:323:26: 致命错误: bits/predefs.h:没有那个文件或目录
    编译中断。

    或者是这个现象

    <command-line>:0:0: error: "_FORTIFY_SOURCE" redefined [-Werror]
     <built-in>:0:0: note: this is the location of the previous definition
     cc1plus: all warnings being treated as errors
    make: *** [out/host/linux-x86/obj/EXECUTABLES/obbtool_intermediates/Main.o] Error 1

    上述两个问题都是由于:

     

    ubuntu 11.10的gcc版本是4.6.1,版本太高,编译android时出错,要把gcc版本改为4.4.3。

    废话不多说了,直接写解决方法吧;

    ubuntu 系统下安装gcc 4.4的方法是仅用以下两条命令。

    sudo apt-get install gcc-4.4

    sudo apt-get install g++-4.4

    装完后在/usr/bin目录下

    $ ls -l gcc*

    lrwxrwxrwx 1 root root      7 2011-10-29 09:11 gcc -> gcc-4.6

    -rwxr-xr-x 1 root root 224544 2011-10-06 05:47 gcc-4.4

    -rwxr-xr-x 1 root root 302104 2011-09-17 05:43 gcc-4.6

    这时会发现gcc 链接到gcc-4.6,  需要将它改为链接到gcc-4.4 :

    sudo mv gcc gcc.bak

    sudo ln -s gcc-4.4 gcc

    同理

    ls -l g++*

    lrwxrwxrwx 1 root root      7 2011-08-14 15:17 g++ -> g++-4.6

    -rwxr-xr-x 1 root root 228640 2011-10-06 05:45 g++-4.4

    -rwxr-xr-x 1 root root 306200 2011-09-17 05:39 g++-4.6

    需要将g++链接改为g++-4.4:

    /usr/bin$ sudo mv g++ g++.bak

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

    再查看gcc和g++版本号:
    gcc -v
    g++ -v
     
    以上方法还是不行。
     
    /usr/include/features.h:324:26: fatal error: bits/predefs.h: No such file or directoryIn file included from /home/hudan/android/source/android4.1.1/prebuilts/gcc/linux-x86/host/i686-linux-glibc2.7-4.6/bin/../sysroot/usr/include/sys/types.h:27:0,
                     from frameworks/native/include/utils/Errors.h:20,
                     from frameworks/native/include/utils/String8.h:20,
                     from cts/suite/audio_quality/lib/include/Settings.h:21,
                     from cts/suite/audio_quality/lib/src/Settings.cpp:17:
    /usr/include/features.h:324:26: fatal error: bits/predefs.h: No such file or directoryIn file included from /usr/include/stdlib.h:25:0,
                     from cts/suite/audio_quality/lib/src/Adb.cpp:16:
    /usr/include/features.h:324:26: fatal error: bits/predefs.h: No such file or directory
     
    compilation terminated.
    compilation terminated.
     
    compilation terminated.
    make: *** [out/host/linux-x86/obj/STATIC_LIBRARIES/libcts_audio_quality_intermediates/src/SimpleScriptExec.o] Error 1
    make: *** Waiting for unfinished jobs....
    make: *** [out/host/linux-x86/obj/STATIC_LIBRARIES/libcts_audio_quality_intermediates/src/Adb.o] Error 1
    make: *** [out/host/linux-x86/obj/STATIC_LIBRARIES/libcts_audio_quality_intermediates/src/Settings.o] Error 1
    In file included from /usr/include/semaphore.h:22:0,
                     from cts/suite/audio_quality/lib/include/Semaphore.h:21,
                     from cts/suite/audio_quality/lib/src/Semaphore.cpp:17:
    /usr/include/features.h:324:26: fatal error: bits/predefs.h: No such file or directory
    compilation terminated.
    make: *** [out/host/linux-x86/obj/STATIC_LIBRARIES/libcts_audio_quality_intermediates/src/Semaphore.o] Error 
    解决方法:sudo apt-get install gcc-multilib 
     
    以上方法还有问题!
     
    g++: g++: selected multilib '32' not installed
    sudo apt-get install g++-multilib
    sudo apt-get install libc6-dev ia32-libs lib32ncurses5-dev x11proto-core-dev libx11-dev lib32readline-gplv2-dev lib32z-dev libgl1-mesa-dev mingw32 tofrodos python-markdown libxml2-utils
    sudo apt-get install g++-4.4-multilib

    第一个错误是:

    很多人在编译android4.0中可能遇到一些列问题,比如说其中一个就是GCC版本过高。

    ————————————————————————————————–

    例如:

    /usr/include/features.h:323:26: 致命错误: bits/predefs.h:没有那个文件或目录

    编译中断。
    make: *** [out/host/linux-x86/obj/EXECUTABLES/mkbootfs_intermediates/mkbootfs.o] 错误 1
    make: *** 正在等待未完成的任务….
    In file included from /usr/include/stdlib.h:25:0,
    from build/tools/acp/acp.c:11:
    /usr/include/features.h:323:26: 致命错误: bits/predefs.h:没有那个文件或目录
    编译中断。

    ubuntu 11.10的gcc版本是4.6.1,版本太高,编译android时出错,要把gcc版本改为4.4.3。

    废话不多说了,直接写解决方法吧;

    ubuntu 系统下安装gcc 4.4的方法是仅用以下两条命令。

    sudo apt-get install gcc-4.4

    sudo apt-get install g++-4.4

    装完后在/usr/bin目录下

    $ ls -l gcc*

    lrwxrwxrwx 1 root root      7 2011-10-29 09:11 gcc -> gcc-4.6

    -rwxr-xr-x 1 root root 224544 2011-10-06 05:47 gcc-4.4

    -rwxr-xr-x 1 root root 302104 2011-09-17 05:43 gcc-4.6

    这时会发现gcc 链接到gcc-4.6,  需要将它改为链接到gcc-4.4 :

    sudo mv gcc gcc.bak

    sudo ln -s gcc-4.4 gcc

    同理

    ls -l g++*

    lrwxrwxrwx 1 root root      7 2011-08-14 15:17 g++ -> g++-4.6

    -rwxr-xr-x 1 root root 228640 2011-10-06 05:45 g++-4.4

    -rwxr-xr-x 1 root root 306200 2011-09-17 05:39 g++-4.6

    需要将g++链接改为g++-4.4:

     

    /usr/bin$ sudo mv g++ g++.bak

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

    再查看gcc和g++版本号:
    gcc -v
    g++ -v

     

    错误1:

    注意:external/protobuf/java/src/main/java/com/google/protobuf/GeneratedMessageLite.java 使用了未经检查或不安全的操作。

    注意:要了解详细信息,请使用 -Xlint:unchecked 重新编译。
    注意:external/protobuf/java/src/main/java/com/google/protobuf/micro/CodedInputStreamMicro.java 使用了未经检查或不安全的操作。
    注意:要了解详细信息,请使用 -Xlint:unchecked 重新编译。
    Generated: (out/target/product/generic/android-info.txt)
    host C: acp <= build/tools/acp/acp.c
    host C++: libhost <= build/libs/host/pseudolocalize.cpp
    host C: libhost <= build/libs/host/CopyFile.c
    <命令行>:0:0: 警告: “_FORTIFY_SOURCE”重定义 [默认启用]
    <built-in>:0:0: 附注: 这是先前定义的位置
    <命令行>:0:0: 警告: “_FORTIFY_SOURCE”重定义 [默认启用]
    <built-in>:0:0: 附注: 这是先前定义的位置
    In file included from build/libs/host/CopyFile.c:11:0:
    build/libs/host/include/host/CopyFile.h:5:22: 致命错误: sys/stat.h:没有那个文件或目录
    编译中断。
    In file included from /usr/include/stdlib.h:25:0,
                     from build/tools/acp/acp.c:11:
    /usr/include/features.h:323:26: 致命错误: bits/predefs.h:没有那个文件或目录
    编译中断。
    make: *** [out/host/linux-x86/obj/STATIC_LIBRARIES/libhost_intermediates/CopyFile.o] 错误 1
    make: *** 正在等待未完成的任务....
    make: *** [out/host/linux-x86/obj/EXECUTABLES/acp_intermediates/acp.o] 错误 1
    <命令行>:0:0: 警告: “_FORTIFY_SOURCE”重定义 [默认启用]
    <built-in>:0:0: 附注: 这是先前定义的位置
    In file included from /usr/include/c++/4.6/x86_64-linux-gnu/32/bits/os_defines.h:40:0,
                     from /usr/include/c++/4.6/x86_64-linux-gnu/32/bits/c++config.h:392,
                     from /usr/include/c++/4.6/string:40,
                     from build/libs/host/include/host/pseudolocalize.h:4,
                     from build/libs/host/pseudolocalize.cpp:1:
    /usr/include/features.h:323:26: 致命错误: bits/predefs.h:没有那个文件或目录
    编译中断。

    make: *** [out/host/linux-x86/obj/STATIC_LIBRARIES/libhost_intermediates/pseudolocalize.o] 错误 1

     

    注意:某些输入文件使用或覆盖了已过时的 API。
    注意:要了解详细信息,请使用 -Xlint:deprecation 重新编译。
    注意:某些输入文件使用了未经检查或不安全的操作。

    注意:要了解详细信息,请使用 -Xlint:unchecked 重新编译。

    解决方法:sudo apt-get install libc6-dev-i386

    http://www.blogjava.net/ZircoN/archive/2011/11/13/363452.html

  • 相关阅读:
    SQL Server 配置管理器不见了
    SQL常用函数使用
    数据库优化
    关于百度地图js api的getCurrentPosition定位不准确的解决方法
    uni-app中使用外部字体
    不定高度,元素垂直居中
    css实现的鼠标悬浮提示
    导入
    下载
    百度地图在地图上标点显示数字
  • 原文地址:https://www.cnblogs.com/tao560532/p/3302444.html
Copyright © 2020-2023  润新知