Ubuntu 12.04 Desktop 版本编译 Android 4.0.4 出错解决

在Ubuntu 12.04 Desktop环境下编译Android 4.0.4时遇到错误,通过修改HOST_GLOBAL_CFLAGS变量,注释掉oprofile库中的mutable关键字,添加头文件,调整LOCAL_LDLIBS和移除-Werror编译标志等步骤,成功解决了编译过程中的问题。
摘要由CSDN通过智能技术生成

环境配置检查结果, PASS:

Build Environment Check Result Report
*************************************************************

[OS]: Ubuntu 12.04 (64-bit) [WARNING]
your ubuntu os version is higher than recommendation

[Physical Memory Size] : 3960292 K-Bytes [WARNING]
it's smaller than recommendation, may cause out-of-memory build error

[make]: 3.81 (64-bit) [OK]
[perl]: 5.14.2 (64-bit) [WARNING]
your perl version is higher than recommendation

[python]: 2.7.3 (64-bit) [WARNING]
your python version is higher than recommendation

[arm-linux-androideabi-gcc]: 4.4.3 (32-bit) [OK]
[gcc]: 4.6.3 (64-bit) [WARNING]
your gcc version is higher than recommendation

[jdk]: 1.6.0_33 (64-bit) [OK]
[bison]: 2.5 (64-bit) [WARNING]
your bison version is higher than recommendation

[flex]: 2.5.35 (64-bit) [OK]
[gperf]: 3.0.3 (64-bit) [OK]
[mingw]: Installed [OK]
[unix2dos/tofrodos]: Installed [OK]
[wine]: 1.4 (32-bit) [WARNING]
your wine version is higher than recommendation

*************************************************************

出错1:

host C++: obbtool <= frameworks/base/tools/obbtool/Main.cpp
:0:0: error: "_FORTIFY_SOURCE" redefined [-Werror]
:0:0: note: this is the location of the previous definition
cc1plus: all warnings being treated as errors
make: *** [out/host/linux-x86/obj/EXECUTABLES/obbtool_intermediates/Main.o] Error 1
解决办法:
在 ubuild/core/combo/HOST_linux-x86.mk 文件中:

找到行:

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

出错2:

external/mesa3d/src/glsl/linker.cpp:1394:49: error: expected primary-expression before ‘,’ token
external/mesa3d/src/glsl/linker.cpp:1394:50: error: ‘varyings’ was not declared in this scope
external/mesa3d/src/glsl/linker.cpp:1394:58: error: ‘offsetof’ was not declared in this scope
external/mesa3d/src/glsl/linker.cpp:1395:48: error: expected primary-expression before ‘,’ token
external/mesa3d/src/glsl/linker.cpp:1412:47: error: expected primary-expression before ‘,’ token
external/mesa3d/src/glsl/linker.cpp:1412:48: error: ‘position’ was not declared in this scope
external/mesa3d/src/glsl/linker.cpp:1414:47: error: expected primary-expression before ‘,’ token
external/mesa3d/src/glsl/linker.cpp:1414:48: error: ‘pointSize’ was not declared in this scope
external/mesa3d/src/glsl/linker.cpp:1424:47: error: expected primary-expression before ‘,’ token
external/mesa3d/src/glsl/linker.cpp:1424:48: error: ‘position’ was not declared in this scope
external/mesa3d/src/glsl/linker.cpp:1428:47: error: expected primary-expression before ‘,’ token
external/mesa3d/src/glsl/linker.cpp:1428:48: error: ‘frontFacingPointCoord’ was not declared in this scope
external/mesa3d/src/glsl/linker.cpp:1431:47: error: expected primary-expression before ‘,’ token
external/mesa3d/src/glsl/linker.cpp:1431:48: error: ‘frontFacingPointCoord’ was not declared in this scope
host C++: libMesa <= external/mesa3d/src/glsl/loop_controls.cpp
external/mesa3d/src/glsl/linker.cpp: In function ‘void link_shaders(const gl_context*, gl_shader_program*)’:
external/mesa3d/src/glsl/linker.cpp:1734:49: error: expected primary-expression before ‘,’ token
external/mesa3d/src/glsl/linker.cpp:1734:50: error: ‘fragColor’ was not declared in this scope
external/mesa3d/src/glsl/linker.cpp:1734:59: error: ‘offsetof’ was not declared in this scope
make[2]: *** [out/host/linux-x86/obj/STATIC_LIBRARIES/libMesa_intermediates/src/glsl/linker.o] Error 1
解决办法:
vim external/mesa3d/src/glsl/linker.cpp
添加:
#include <cstddef>

出错3:

In file included from external/oprofile/libpp/arrange_profiles.cpp:24:0:
external/oprofile/libpp/format_output.h:94:22: error: reference ‘counts’ cannot be declared ‘mutable’ [-fpermissive]
host C++: liboprofile_pp <= external/oprofile/libpp/callgraph_container.cpp
make[2]: *** [out/host/linux-x86/obj/STATIC_LIBRARIES/liboprofile_pp_intermediates/arrange_profiles.o] Error 1
解决办法:

vim external/oprofile/libpp/format_output.h

找到 94行,把 mutable 字符串注释掉;

问题3:

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: error: ‘ptrdiff_t’ does not name a type
make[2]: *** [out/host/linux-x86/obj/STATIC_LIBRARIES/libgtest_main_host_intermediates/gtest_main.o] Error 1
解决办法:
$vim external/gtest/src/../include/gtest/internal/gtest-param-util.h

添加:
#include <cstddef>

问题4:

out/host/linux-x86/obj/STATIC_LIBRARIES/libLLVMSupport_intermediates/libLLVMSupport.a(Signals.o): In function `PrintStackTrace':
/home/eavoo/mt6575v2/external/llvm/lib/Support/Unix/Signals.inc:219: undefined reference to `dladdr'
/home/eavoo/mt6575v2/external/llvm/lib/Support/Unix/Signals.inc:231: undefined reference to `dladdr'
out/host/linux-x86/obj/STATIC_LIBRARIES/libLLVMSupport_intermediates/libLLVMSupport.a(Threading.o): In function `llvm::llvm_execute_on_thread(void (*)(void*), void*, unsigned int)':
/home/eavoo/mt6575v2/external/llvm/lib/Support/Threading.cpp:96: undefined reference to `pthread_create'
/home/eavoo/mt6575v2/external/llvm/lib/Support/Threading.cpp:91: undefined reference to `pthread_attr_setstacksize'
/home/eavoo/mt6575v2/external/llvm/lib/Support/Threading.cpp:100: undefined reference to `pthread_join'
out/host/linux-x86/obj/STATIC_LIBRARIES/libLLVMSupport_intermediates/libLLVMSupport.a(Mutex.o): In function `MutexImpl':
/home/eavoo/mt6575v2/external/llvm/lib/Support/Mutex.cpp:69: undefined reference to `pthread_mutexattr_init'
/home/eavoo/mt6575v2/external/llvm/lib/Support/Mutex.cpp:75: undefined reference to `pthread_mutexattr_settype'
/home/eavoo/mt6575v2/external/llvm/lib/Support/Mutex.cpp:80: undefined reference to `pthread_mutexattr_setpshared'
/home/eavoo/mt6575v2/external/llvm/lib/Support/Mutex.cpp:89: undefined reference to `pthread_mutexattr_destroy'
out/host/linux-x86/obj/STATIC_LIBRARIES/libLLVMSupport_intermediates/libLLVMSupport.a(Mutex.o): In function `llvm::sys::MutexImpl::tryacquire()':
/home/eavoo/mt6575v2/external/llvm/lib/Support/Mutex.cpp:143: undefined reference to `pthread_mutex_trylock'
collect2: ld returned 1 exit status
make[2]: *** [out/host/linux-x86/obj/EXECUTABLES/test-librsloader_intermediates/test-librsloader] Error 1
$vim external/llvm/llvm-host-build.mk

在文件中插入一行:
LOCAL_LDLIBS := -lpthread -ldl

问题5:

frameworks/compile/slang/slang_rs_export_foreach.cpp: In static member function ‘static slang::RSExportForEach* slang::RSExportForEach::Create(slang::RSContext*, const clang::FunctionDecl*)’:
frameworks/compile/slang/slang_rs_export_foreach.cpp:249:23: error: variable ‘ParamName’ set but not used [-Werror=unused-but-set-variable]
cc1plus: all warnings being treated as errors
make[2]: *** [out/host/linux-x86/obj/EXECUTABLES/llvm-rs-cc_intermediates/slang_rs_export_foreach.o] Error 1
解决办法:

$ vim frameworks/compile/slang/Android.mk

local_cflags_for_slang 所在行最后的 -Werror 去掉:

#local_cflags_for_slang := -Wno-sign-promo -Wall -Wno-unused-parameter -Werror
local_cflags_for_slang := -Wno-sign-promo -Wall -Wno-unused-parameter


解决上述问题,编译 OK.


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值