Android: Ubuntu 12.04 LTS下Build Android Source Tree 4.0.1遇到的错误

本文详细记录了在Ubuntu 12.04 LTS操作系统中编译Android 4.0.1源码时遇到的常见错误及解决方案,包括"_FORTIFY_SOURCE"重定义问题、mutable counts错误、pthread_mutex.Trylock未定义引用以及'ptrdiff_t'不是类型名的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原先在英文环境下的记录没有了,在中文环境下重新Build了一次:


1) “_FORTIFY_SOURCE”重定义


<命令行>:0:0: 警告: “_FORTIFY_SOURCE”重定义 [默认启用]
<built-in>:0:0: 附注: 这是先前定义的位置

解决方法:


build/core/combo/HOST_linux-x86.mk: 56行

HOST_GLOBAL_CFLAGS += -D_FORTIFY_SOURCE=0
更改为:
HOST_GLOBAL_CFLAGS += -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0

2)错误: variable ‘ParamName’ set but not used

frameworks/compile/slang/slang_rs_export_foreach.cpp: 在静态成员函数‘static slang::RSExportForEach* slang::RSExportForEach::Create(slang::RSContext*, const clang::FunctionDecl*)’中:
frameworks/compile/slang/slang_rs_export_foreach.cpp:247:23: 错误: variable ‘ParamName’ set but not used [-Werror=unused-but-set-variable]
cc1plus: all warnings being treated as errors

解决方法:

将frameworks/compile/slang/slang_rs_export_foreach.cpp: 247行

      llvm::StringRef ParamName = PVD->getName();

注解掉。


3)错误: reference ‘counts’ cannot be declared ‘mutable’

In file included from external/oprofile/libpp/arrange_profiles.cpp:24:0:
external/oprofile/libpp/format_output.h:94:22: 错误: reference ‘counts’ cannot be declared ‘mutable’ [-fpermissive]
make: *** [out/host/linux-x86/obj/STATIC_LIBRARIES/liboprofile_pp_intermediates/arrange_profiles.o] 错误 1

解决办法: 

将external/oprofile/libpp/format_output.h: 94行

mutable counts_t & counts;
改为:
counts_t & counts;

4)undefined reference to `pthread_mutex_trylock' collect2

out/host/linux-x86/obj/STATIC_LIBRARIES/libLLVMSupport_intermediates/libLLVMSupport.a(Mutex.o): In function `llvm::sys::MutexImpl::tryacquire()':
/home/rzzhang/workspace/external/llvm/lib/Support/Mutex.cpp:143: undefined reference to `pthread_mutex_trylock'
collect2: ld 返回 1
make: *** [out/host/linux-x86/obj/EXECUTABLES/test-librsloader_intermediates/test-librsloader] 错误 1

解决方法:

在vim external/llvm/llvm-host-build.mk: 45行

LOCAL_IS_HOST_MODULE := true

后添加:

LOCAL_LDLIBS := -lpthread -ldl


5) ‘ptrdiff_t’不是一个类型名

host C++: libgtest_host <= external/gtest/src/gtest-all.cc
In 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.cc:34,
                 from external/gtest/src/gtest-all.cc:36:
external/gtest/src/../include/gtest/internal/gtest-param-util.h:122:11: 错误: ‘ptrdiff_t’不是一个类型名
In file included from external/gtest/src/gtest-all.cc:38:0:
external/gtest/src/../src/gtest-filepath.cc: 在成员函数‘bool testing::internal::FilePath::FileOrDirectoryExists() const’中:
external/gtest/src/../src/gtest-filepath.cc:180:28: 警告: 成员‘stat::st_dev’缺少初始值设定 [-Wmissing-field-initializers]
external/gtest/src/../src/gtest-filepath.cc:180:28: 警告: 成员‘stat::__pad1’缺少初始值设定 [-Wmissing-field-initializers]
external/gtest/src/../src/gtest-filepath.cc:180:28: 警告: 成员‘stat::__st_ino’缺少初始值设定 [-Wmissing-field-initializers]
external/gtest/src/../src/gtest-filepath.cc:180:28: 警告: 成员‘stat::st_mode’缺少初始值设定 [-Wmissing-field-initializers]
external/gtest/src/../src/gtest-filepath.cc:180:28: 警告: 成员‘stat::st_nlink’缺少初始值设定 [-Wmissing-field-initializers]
external/gtest/src/../src/gtest-filepath.cc:180:28: 警告: 成员‘stat::st_uid’缺少初始值设定 [-Wmissing-field-initializers]
external/gtest/src/../src/gtest-filepath.cc:180:28: 警告: 成员‘stat::st_gid’缺少初始值设定 [-Wmissing-field-initializers]
external/gtest/src/../src/gtest-filepath.cc:180:28: 警告: 成员‘stat::st_rdev’缺少初始值设定 [-Wmissing-field-initializers]
external/gtest/src/../src/gtest-filepath.cc:180:28: 警告: 成员‘stat::__pad2’缺少初始值设定 [-Wmissing-field-initializers]
external/gtest/src/../src/gtest-filepath.cc:180:28: 警告: 成员‘stat::st_size’缺少初始值设定 [-Wmissing-field-initializers]
external/gtest/src/../src/gtest-filepath.cc:180:28: 警告: 成员‘stat::st_blksize’缺少初始值设定 [-Wmissing-field-initializers]
external/gtest/src/../src/gtest-filepath.cc:180:28: 警告: 成员‘stat::st_blocks’缺少初始值设定 [-Wmissing-field-initializers]
external/gtest/src/../src/gtest-filepath.cc:180:28: 警告: 成员‘stat::st_atim’缺少初始值设定 [-Wmissing-field-initializers]
external/gtest/src/../src/gtest-filepath.cc:180:28: 警告: 成员‘stat::st_mtim’缺少初始值设定 [-Wmissing-field-initializers]
external/gtest/src/../src/gtest-filepath.cc:180:28: 警告: 成员‘stat::st_ctim’缺少初始值设定 [-Wmissing-field-initializers]
external/gtest/src/../src/gtest-filepath.cc:180:28: 警告: 成员‘stat::st_ino’缺少初始值设定 [-Wmissing-field-initializers]
In file included from external/gtest/src/gtest-all.cc:38:0:
external/gtest/src/../src/gtest-filepath.cc: 在成员函数‘bool testing::internal::FilePath::DirectoryExists() const’中:
external/gtest/src/../src/gtest-filepath.cc:208:28: 警告: 成员‘stat::st_dev’缺少初始值设定 [-Wmissing-field-initializers]
external/gtest/src/../src/gtest-filepath.cc:208:28: 警告: 成员‘stat::__pad1’缺少初始值设定 [-Wmissing-field-initializers]
external/gtest/src/../src/gtest-filepath.cc:208:28: 警告: 成员‘stat::__st_ino’缺少初始值设定 [-Wmissing-field-initializers]
external/gtest/src/../src/gtest-filepath.cc:208:28: 警告: 成员‘stat::st_mode’缺少初始值设定 [-Wmissing-field-initializers]
external/gtest/src/../src/gtest-filepath.cc:208:28: 警告: 成员‘stat::st_nlink’缺少初始值设定 [-Wmissing-field-initializers]
external/gtest/src/../src/gtest-filepath.cc:208:28: 警告: 成员‘stat::st_uid’缺少初始值设定 [-Wmissing-field-initializers]
external/gtest/src/../src/gtest-filepath.cc:208:28: 警告: 成员‘stat::st_gid’缺少初始值设定 [-Wmissing-field-initializers]
external/gtest/src/../src/gtest-filepath.cc:208:28: 警告: 成员‘stat::st_rdev’缺少初始值设定 [-Wmissing-field-initializers]
external/gtest/src/../src/gtest-filepath.cc:208:28: 警告: 成员‘stat::__pad2’缺少初始值设定 [-Wmissing-field-initializers]
external/gtest/src/../src/gtest-filepath.cc:208:28: 警告: 成员‘stat::st_size’缺少初始值设定 [-Wmissing-field-initializers]
external/gtest/src/../src/gtest-filepath.cc:208:28: 警告: 成员‘stat::st_blksize’缺少初始值设定 [-Wmissing-field-initializers]
external/gtest/src/../src/gtest-filepath.cc:208:28: 警告: 成员‘stat::st_blocks’缺少初始值设定 [-Wmissing-field-initializers]
external/gtest/src/../src/gtest-filepath.cc:208:28: 警告: 成员‘stat::st_atim’缺少初始值设定 [-Wmissing-field-initializers]
external/gtest/src/../src/gtest-filepath.cc:208:28: 警告: 成员‘stat::st_mtim’缺少初始值设定 [-Wmissing-field-initializers]
external/gtest/src/../src/gtest-filepath.cc:208:28: 警告: 成员‘stat::st_ctim’缺少初始值设定 [-Wmissing-field-initializers]
external/gtest/src/../src/gtest-filepath.cc:208:28: 警告: 成员‘stat::st_ino’缺少初始值设定 [-Wmissing-field-initializers]
make: *** [out/host/linux-x86/obj/STATIC_LIBRARIES/libgtest_host_intermediates/gtest-all.o] 错误 1


解决方法:

在external/gtest/include/gtest/internal/gtest-param-util.h开头


添加:

#include <cstddef>


6)libGLES_CM_translator

host StaticLib: libGLcommon (out/host/linux-x86/obj/STATIC_LIBRARIES/libGLcommon
_intermediates/libGLcommon.a)
host SharedLib: libGLES_CM_translator (out/host/linux-x86/obj/lib/libGLES_CM_tra
nslator.so)
/usr/bin/ld: cannot find -lGL
collect2: ld returned 1 exit status
make: *** [out/host/linux-x86/obj/lib/libGLES_CM_translator.so] Error 1

解决方法:

sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1.2 /usr/lib/libGL.so

说明:第六项在本次编译中没有遇到,但是在英文环境下曾经遇到过。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值