Android 源码编译及常见错误及解决方法
Android 源码编译及常见错误及解决方法
最近要往arm开发板上移植android系统,大大小小的问题遇到了太多太多,都是泪啊。本人初接触嵌入式开发,对问题的根源不是太了解,不过好在每解决一个问题,便记录一下。话不多说,正式罗列问题:
host Executable: a3dconvert (out/host/linux-x86/obj/EXECUTABLES/a3dconvert_intermediates/ /usr/bin/: skipping incompatible /usr/lib//x86_64-linux-gnu/./libstdc++.so when searching -lstdc++
/usr/bin/: skipping incompatible /usr/lib//x86_64-linux-gnu/./libstdc++.a when searching -lstdc++
/usr/bin/: cannot -lstdc++
/usr/bin/: skipping incompatible /usr/lib//x86_64-linux-gnu/./libgcc_s.so when searching - /usr/bin/: cannot - /usr/bin/: skipping incompatible /usr/lib//x86_64-linux-gnu/./libgcc.a when searching - /usr/bin/: cannot - collect2: returned : *** [out/host/linux-x86/obj/EXECUTABLES/a3dconvert_intermediates/a3dconvert] Error
缺少g++-multilib库,安装即可: apt-get install g++-multilib
$ sudo apt-get install g++-multilib g++-4.5-multilib
g++ : *** [out/host/linux-x86/obj/STATIC_LIBRARIES/libutils_intermediates/RefBase.o] 错误
解决方法:
sudo apt-get install g++-4.4-multilib
rameworks/base/libs/utils/RefBase.: 在成员函数‘void android::RefBase::weakref_type::trackMe(, frameworks/base/libs/utils/RefBase.::: 错误: 将‘const android::RefBase::weakref_impl’作为‘void android::RefBase::weakref_impl::trackMe(, )’的‘this’实参时丢弃了类型限定 [- : *** [out/host/linux-x86/obj/STATIC_LIBRARIES/libutils_intermediates/RefBase.o] 错误
原因:
/usr/bin/: cannot - host Executable: aapt (out/host/linux-x86/obj/EXECUTABLES/aapt_intermediates/ /usr/bin/: cannot - collect2: returned : *** [out/host/linux-x86/obj/EXECUTABLES/aapt_intermediates/aapt] Error
解决方法:
sudo apt-get install zlib1g-dev
/bin/ Yacc: aidl <= frameworks/base/tools/aidl/ bison -d -o out/host/linux-x86/obj/EXECUTABLES/aidl_intermediates/aidl_language_y. frameworks/base/tools/aidl/ /bin/ : *** [out/host/linux-x86/obj/EXECUTABLES/aidl_intermediates/aidl_language_y.] Error
解决方法:
sudo apt-get install bison
/bin/ out/host/linux-x86/obj/EXECUTABLES/aidl_intermediates/aidl_language_y.: In ‘ out/host/linux-x86/obj/EXECUTABLES/aidl_intermediates/aidl_language_y.:: warning: deprecated conversion from constant to ‘* out/host/linux-x86/obj/EXECUTABLES/aidl_intermediates/aidl_language_y.:: warning: deprecated conversion from constant to ‘* Lex: aidl <= frameworks/base/tools/aidl/ /bin/ : *** [out/host/linux-x86/obj/EXECUTABLES/aidl_intermediates/aidl_language_l.] Error
解决方法:
sudo apt-get install flex
/usr/bin/: cannot - host Executable: adb (out/host/linux-x86/obj/EXECUTABLES/adb_intermediates/ /usr/bin/: cannot - collect2: returned : *** [out/host/linux-x86/obj/EXECUTABLES/adb_intermediates/adb] Error
解决方法:
sudo apt-get install libncurses5-dev
fatal error: GL/glx.h: No such development/tools/emulator/opengl/host/libs/Translator/GLcommon/GLDispatch.:: fatal error: GL/glx.h: No such : *** [out/host/linux-x86/obj/STATIC_LIBRARIES/libGLcommon_intermediates/GLDispatch.o] Error
解决方法:
sudo apt-get install libgl1-mesa-dev
target Generated: libwebcore <= external/webkit/Source/JavaScriptCore/ Generating CSSPropertyNames.h <= CSSPropertyNames.
calling gperf failed: at ./makeprop.pl line : *** [out/target/product/generic/obj/STATIC_LIBRARIES/libwebcore_intermediates/Source/WebCore/css/CSSPropertyNames.h] Error
: *** Deleting `out/target/product/generic/obj/STATIC_LIBRARIES/libwebcore_intermediates/Source/WebCore/css/CSSPropertyNames.h
解决方法:
sudo apt-get install gperf
host C++: libutils <= frameworks/base/libs/utils/RefBase.
frameworks/base/libs/utils/RefBase.: In member ‘void android::RefBase::weakref_type::trackMe(, frameworks/base/libs/utils/RefBase.::: error: passing ‘const android::RefBase::weakref_impl’ as ‘this’ argument of ‘void android::RefBase::weakref_impl::trackMe(, )’ discards qualifiers [- : *** [out/host/linux-x86/obj/STATIC_LIBRARIES/libutils_intermediates/RefBase.o] 错误
解决方法:
gedit frameworks/base/libs/utils/Android.mk
将语句:
LOCAL_CFLAGS += -DLIBUTILS_NATIVE=1 $(TOOL_CFLAGS)
修改为:
LOCAL_CFLAGS += -DLIBUTILS_NATIVE=1 $(TOOL_CFLAGS) –fpermissive
out/host/linux-x86/obj/STATIC_LIBRARIES/libcutils_intermediates/libcutils.a(threads.o): In `thread_store_get
/home/leno/works/android_dev/bin/system/core/libcutils/threads.c:: undefined reference to `pthread_getspecific out/host/linux-x86/obj/STATIC_LIBRARIES/libcutils_intermediates/libcutils.a(threads.o): In `thread_store_set
/home/leno/works/android_dev/bin/system/core/libcutils/threads.c:: undefined reference to `pthread_key_create /home/leno/works/android_dev/bin/system/core/libcutils/threads.c:: undefined reference to `pthread_setspecific collect2: returned : *** [out/host/linux-x86/obj/EXECUTABLES/localize_intermediates/localize] 错误
解决方法:
修改./framework/base/tools/localize/Android.mk文件
ifeq ($(HOST_OS),linux)
#LOCAL_LDLIBS += -lrt 把这行注释掉,改为下面一行。
LOCAL_LDLIBS += -lrt -lpthread
endif
评论暂时关闭