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

相关内容