1、Android 4编译错误汇总2.Q:frameworks/base/libs/utils/RefBase.cpp:483:67: error: passing const android:RefBase:weakref_impl as this argument of void android:RefBase:weakref_impl:trackMe(bool, bool) discards qualifiers -fpermissive make: * out/host/linux-x86/obj/STATIC_LIBRARIES/libutils_intermediates/RefBas
2、e.o Error 1解决方法:$ gedit frameworks/base/libs/utils/Android.mk修改以下语句LOCAL_CFLAGS += -DLIBUTILS_NATIVE=1 $(TOOL_CFLAGS)为LOCAL_CFLAGS += -DLIBUTILS_NATIVE=1 $(TOOL_CFLAGS) fpermissive3.Q:arm-eabi-gcc: error trying to exec cc1: execvp: No such file or directorymake: * out/target/product/generic/obj/lib/
3、crtbegin_dynamic.o Error 1如果之前的依赖包都已经安装成功的话,此处应该是交叉编译工具权限的问题。这个问题只要在文章开头lunch时执行了赋予权限命令,就应该不会遇到了。4.Q::0:0: error: _FORTIFY_SOURCE redefined -Werror :0:0: note: this is the location of the previous definition cc1plus: all warnings being treated as errorsmake: * out/host/linux-x86/obj/EXECUTABLES/obbt
4、ool_intermediates/Main.o Error 1此处编译错误是由于ubuntu 11.10采用了GCC4.6.1导致的。解决方法:修改源码目录下/build/core/combo/HOST_linux-x86.mk文件:将以下语句HOST_GLOBAL_CFLAGS += -D_FORTIFY_SOURCE=0修改为HOST_GLOBAL_CFLAGS += -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0make: * out/host/linux-x86/obj/EXECUTABLES/llvm-rs-cc_intermediates/slang_
5、rs_export_foreach.o 错误 1解决办法是:找到frameworks/compile/slang/slang_rs_export_foreach.cpp:的247行,并将本行注释掉即可继续编译。make: * out/host/linux-x86/obj/EXECUTABLES/obbtool_intermediates/Main.o Error 1后来发现了,原来是Ubuntu11.10里的gcc和g+版本太高了,于是执行下面的操作:sudo apt-get install gcc-4.4sudo apt-get install g+-4.4sudo rm -rf /usr/
6、bin/gcc /usr/bin/g+sudo ln -s /usr/bin/gcc-4.4 /usr/bin/gccsudo ln -s /usr/bin/g+-4.4 /usr/bin/g+把默认的4.6版本换为了4.4,继续编译源码,又出现了另一个错误,大致提示为:g+ selected multilib 32 not installed继续奋战吧,安装相应的工具吧:sudo apt-get install g+-4.4-multilib,现在正在make -j8在我的i5/4G机子里跑着。make: * out/host/linux-x86/obj/STATIC_LIBRARIES/l
7、ibMesa_intermediates/src/glsl/linker.o Error 1解决这个问题需要修改文件如下:把 #include 添加到 linker.cpp 文件头部。这样就可以编译完成了。1.错误一:error: ptrdiff_t does not name a typeIn file included from external/gtest/src/./include/gtest/gtest-param-test.h:157:0, from external/gtest/src/./include/gtest/gtest.h:69, from external/gtest
8、/src/gtest_main.cc:32:external/gtest/src/./include/gtest/internal/gtest-param-util.h:122:11: error: ptrdiff_t does not name a typeIn file included from external/gtest/src/./include/gtest/gtest-param-test.h:157:0, from external/gtest/src/./include/gtest/gtest.h:69, from external/gtest/src/./src/gtest
9、.cc:34, from external/gtest/src/gtest-all.cc:36:external/gtest/src/./include/gtest/internal/gtest-param-util.h:122:11: error: ptrdiff_t does not name a typeIn file included from external/gtest/src/gtest-all.cc:38:0:解决方法:$vi external/gtest/src/./include/gtest/internal/gtest-param-util.h#include 2.错误二
10、:undefined reference to pthread_mutexattr_destroyhost C+: libgtest_host = external/gtest/src/gtest-all.cctruehost C+: libgtest_main_host = external/gtest/src/gtest_main.ccout/host/linux-x86/obj/STATIC_LIBRARIES/libLLVMSupport_intermediates/libLLVMSupport.a(Signals.o): In function PrintStackTrace:/ho
11、me/aa/project/android4.0.1/external/llvm/lib/Support/Unix/Signals.inc:219: undefined reference to dladdr/home/aa/project/android4.0.1/external/llvm/lib/Support/Unix/Signals.inc:231: undefined reference to dladdrout/host/linux-x86/obj/STATIC_LIBRARIES/libLLVMSupport_intermediates/libLLVMSupport.a(Thr
12、eading.o): In function llvm:llvm_execute_on_thread(void (*)(void*), void*, unsigned int):/home/aa/project/android4.0.1/external/llvm/lib/Support/Threading.cpp:96: undefined reference to pthread_create/home/aa/project/android4.0.1/external/llvm/lib/Support/Threading.cpp:91: undefined reference to pth
13、read_attr_setstacksize/home/aa/project/android4.0.1/external/llvm/lib/Support/Threading.cpp:100: undefined reference to pthread_joinout/host/linux-x86/obj/STATIC_LIBRARIES/libLLVMSupport_intermediates/libLLVMSupport.a(Mutex.o): In function MutexImpl:/home/aa/project/android4.0.1/external/llvm/lib/Su
14、pport/Mutex.cpp:69: undefined reference to pthread_mutexattr_init/home/aa/project/android4.0.1/external/llvm/lib/Support/Mutex.cpp:75: undefined reference to pthread_mutexattr_settype/home/aa/project/android4.0.1/external/llvm/lib/Support/Mutex.cpp:80: undefined reference to pthread_mutexattr_setpsh
15、ared/home/aa/project/android4.0.1/external/llvm/lib/Support/Mutex.cpp:89: undefined reference to pthread_mutexattr_destroyout/host/linux-x86/obj/STATIC_LIBRARIES/libLLVMSupport_intermediates/libLLVMSupport.a(Mutex.o): In function llvm:sys:MutexImpl:tryacquire():/home/aa/project/android4.0.1/external
16、/llvm/lib/Support/Mutex.cpp:143: undefined reference to pthread_mutex_trylockcollect2: ld returned 1 exit statusmake: * out/host/linux-x86/obj/EXECUTABLES/test-librsloader_intermediates/test-librsloader Error 1make: * Waiting for unfinished jobs.解决方法:$vi external/llvm/llvm-host-build.mkLOCAL_LDLIBS
17、:= -lpthread -ldl下面这个解决方法没成功,会有新的错误:errors again :cant find threads.h file or dir.$ vi external/llvm/lib/Support/Android.mkLOCAL_C_INCLUDES += system/core/include/cutilsLOCAL_SHARED_LIBRARIES := libcutil$ vi external/llvm/lib/Support/Mutex.cpp#include $ vi external/llvm/lib/Support/Threading.cpp#inc
18、lude 3.错误三:error: variable ParamName set but not used -Werror=unused-but-set-variableframeworks/compile/slang/slang_rs_export_foreach.cpp:247:23: error: variable ParamName set but not used -Werror=unused-but-set-variablecc1plus: all warnings being treated as errors解决方法:$ vi frameworks/compile/slang/
19、Android.mk #local_cflags_for_slang := -Wno-sign-promo -Wall -Wno-unused-parameter -Werrorlocal_cflags_for_slang := -Wno-sign-promo -Wall -Wno-unused-parameter本文介绍在ubuntu 11.10系统下编译android 2.3.3源码,编译之前请确定上两篇文章(准备工作完成后,开始编译工作。下载下来的源码有5G多,如果按照我之前写的获取源码的话,源码目录为/Android/source一、环境设置waynewayne-pc:/Android
20、/source$ source build/envsetup.sh including device/htc/passion/vendorsetup.shincluding device/samsung/crespo/vendorsetup.shwaynewayne-pc:/Android/source$ lunch full-eng在lunch时,如果提示permission denied权限不够的话,需要在源码根目录下执行,赋予目录下所有文件权限waynewayne-pc:/Android/source$ sudo chmod -R 777 *这时候会lunch指令会打印出如下所示文段:=
21、PLATFORM_VERSION_CODENAME=RELPLATFORM_VERSION=2.3.3TARGET_PRODUCT=fullTARGET_BUILD_VARIANT=engTARGET_SIMULATOR=falseTARGET_BUILD_TYPE=releaseTARGET_BUILD_APPS=TARGET_ARCH=armHOST_ARCH=x86HOST_OS=linuxHOST_BUILD_TYPE=releaseBUILD_ID=GRI40=一、开始编译编译过程可能会出现许多错误而中止,在此wayne将会把所有遇到的问题以及解决方法一一贴出来,以供以后参考。1.Q
22、:waynewayne-pc:/Android/source$ make -j2=PLATFORM_VERSION_CODENAME=RELPLATFORM_VERSION=2.3.3TARGET_PRODUCT=fullTARGET_BUILD_VARIANT=engTARGET_SIMULATOR=falseTARGET_BUILD_TYPE=releaseTARGET_BUILD_APPS=TARGET_ARCH=armHOST_ARCH=x86HOST_OS=linuxHOST_BUILD_TYPE=releaseBUILD_ID=GRI40=Checking build tools
23、versions.build/core/main.mk:76: *build/core/main.mk:77: You are attempting to build on a 32-bit system.build/core/main.mk:78: Only 64-bit build environments are supported beyond froyo/2.2.build/core/main.mk:79: *build/core/main.mk:80: * stop。 停止。解决方法:cd到源码根目录,执行:$ gedit build/core/main.mk找到ifneq (64
24、,$(findstring 64,$(build_arch)将其修改为ifneq (i686,$(findstring i686,$(build_arch)然后依次修改以下四个make文件:external/clearsilver/cgi/Android.mkexternal/clearsilver/java-jni/Android.mkexternal/clearsilver/util/Android.mkexternal/clearsilver/cs/Android.mk将其中的LOCAL_CFLAGS += -m64LOCAL_LDFLAGS += -m64修改为LOCAL_CFLAGS
25、 += -m32LOCAL_LDFLAGS += -m322.Q:frameworks/base/libs/utils/RefBase.cpp:483:67: error: passing const android:RefBase:weakref_impl as this argument of void android:RefBase:weakref_impl:trackMe(bool, bool) discards qualifiers -fpermissive make: * out/host/linux-x86/obj/STATIC_LIBRARIES/libutils_interm
26、ediates/RefBase.o Error 1解决方法:$ gedit frameworks/base/libs/utils/Android.mk修改以下语句LOCAL_CFLAGS += -DLIBUTILS_NATIVE=1 $(TOOL_CFLAGS)为LOCAL_CFLAGS += -DLIBUTILS_NATIVE=1 $(TOOL_CFLAGS) fpermissive3.Q:arm-eabi-gcc: error trying to exec cc1: execvp: No such file or directorymake: * out/target/product/ge
27、neric/obj/lib/crtbegin_dynamic.o Error 1如果之前的依赖包都已经安装成功的话,此处应该是交叉编译工具权限的问题。这个问题只要在文章开头lunch时执行了赋予权限命令,就应该不会遇到了。4.Q::0:0: error: _FORTIFY_SOURCE redefined -Werror :0:0: note: this is the location of the previous definition cc1plus: all warnings being treated as errorsmake: * out/host/linux-x86/obj/EX
28、ECUTABLES/obbtool_intermediates/Main.o Error 1此处编译错误是由于ubuntu 11.10采用了GCC4.6.1导致的。解决方法:修改源码目录下/build/core/combo/HOST_linux-x86.mk文件:将以下语句HOST_GLOBAL_CFLAGS += -D_FORTIFY_SOURCE=0修改为HOST_GLOBAL_CFLAGS += -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0编译时还有可能出现类似的错误,根据错误提示的关键词比如g+错误、jre错误等,都是些细节问题,比较好解决。经过两小时左右
29、的等待后,终于顺利完成。编译成功后会生成system.img等镜像文件,下面是编译完成提示:Target system fs image: out/target/product/generic/obj/PACKAGING/systemimage_intermediates/system.imgInstall system fs image: out/target/product/generic/system.imgInstalled file list: out/target/product/generic/installed-files.txt三、启动所编译的系统编译完之后会在out/target/product/generic目录下生成system.img ramdisk.img userdata.img三个镜像文件。在启动模拟器之前,需要先为模拟器系统设置环境变量,执行gedit /.bashrc,
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1