Android源码编译问题点记录

来源:互联网 发布:淘宝菜鸟怎么打印软件 编辑:程序博客网 时间:2024/05/06 00:54

Android 版本:2.3.1_r1

1. 安装java 6 

    官方下载java6安装包

    jdk-6u45-linux-x64.bin

    解包:

    ./jdk-6u45-linux-x64.bin 

    剪切到:

    /usr/lib/jvm

    在.profile和.bashrc配置环境变量:

    sudo gedit ~/.profile

    sudo gedit ~/.bashrc

    在末尾添加:

    export JAVA_HOME=/usr/lib/jvm/jdk1.6.0_45

    export JRE_HOME=/usr/lib/jvm/jdk1.6.0_45/jre

    export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH

    export PATH=$JAVA_HOME/bin:$PATH

    unset JAVA_TOOL_OPTIONS

    刷新配置:

    source ~/.profile

    source ~/.bashrc

    莫名其妙找不到文件问题:

    安装ia32-libs

    找不到bison:

    sudo apt-get install flex bison

    进入root:

    sudo passwd root

    su root

2.注意:

    有时候缺少lib但装了也不行,则可以试试装i386版本

    libxxx-dev:i386

错误:

host Prebuilt: monkeyrunner (out/host/linux-x86/obj/EXECUTABLES/monkeyrunner_intermediates/monkeyrunner)
解决:

修改build/core/combo/HOST_linux-x86.mk 61行,将HOST_GLOBAL_CFLAGS += -D_FORTIFY_SOURCE=0修改成HOST_GLOBAL_CFLAGS += -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0

[4] Error:

external/srec/tools/thirdparty/OpenFst/fst/lib/cache.h:136:11: note: use ‘this->SetState’ instead

make: *** [out/host/linux-x86/obj/EXECUTABLES/grxmlcompile_intermediates/grxmlcompile.o] Error 1

Fix:

cd external/srec

wget https://github.com/CyanogenMod/android_external_srec/commit/4d7ae7b79eda47e489669fbbe1f91ec501d42fb2.diff

patch -p1 < 4d7ae7b79eda47e489669fbbe1f91ec501d42fb2.diff

rm -f 4d7ae7b79eda47e489669fbbe1f91ec501d42fb2.diff

cd ../..

编译 android SLES/OpenSLESUT.h 找不到 是什么问题
target Strip: AudioInRecord (out/target/product/generic/obj/EXECUTABLES/AudioInRecord_intermediates/AudioInRecord)
target thumb C++: BufferQueue_test <= system/media/opensles/tests/automated/BufferQueue_test.cpp
system/media/opensles/tests/automated/BufferQueue_test.cpp:34:29: error: SLES/OpenSLESUT.h: No such file or directory
system/media/opensles/tests/automated/BufferQueue_test.cpp: In function 'void CheckErr(SLresult)':
system/media/opensles/tests/automated/BufferQueue_test.cpp:55: error: 'slesutResultToString' was not declared in this scope
make: *** [out/target/product/generic/obj/EXECUTABLES/BufferQueue_test_intermediates/BufferQueue_test.o] Error 1

解决:
system/media/opensles/tests/automated/BufferQueue_test.cpp


    #include <unistd.h>
    #include "SLES/OpenSLES.h"
    #include "SLES/OpenSLESUT.h"
    #include <gtest/gtest.h>


添加以下部分:
# updatedb
# locate OpenSLESUT.h
/home/Android-2.3/system/media/opensles/libopensles/OpenSLESUT.h
# cp /home/Android-2.3/system/media/opensles/libopensles/OpenSLESUT.h /home/Android-2.3/system/media/opensles/include/SLES/OpenSLESUT.h

0 0
原创粉丝点击