本來不喜歡寫博客的,在Ubuntu 12.04 下編譯了Android 4.0.3發現了一大堆錯誤,網上找了一堆的更改源碼啊,Android.mk的解決方法,雖然可以編譯成功,但都有點坑爹的成分,為了不誤人子弟就分享出來吧。
根本原因是因為gcc的版本太高,ubuntu 12.04的系統帶版本是4.6 的要求嚴格了,稍微有點不注意就報錯。 解決方法就是降級到gcc4.4.
還有就是默認的linux系統調用的頭文件路徑不是標准的,例如/usr/include/i386-linux-gnu/sys
啥都別廢話了, 先裝下面的一堆依賴庫再說
sudo apt-get -y install lib64quadmath0 lib64gomp1 lib64gcc1 libc6-amd64 libc6-dev-amd64 gcc-multilib gcc-4.6-multilib libc-bin libc-dev-bin libc6-dev libc6 build-essential linux-headers-generic linux-libc-dev libmpfr-dev libmpfr libgmp-dev libgmp uboot-mkimage u-boot-tools libglib2.0-dev libpcre3-dev git-man liberror-perl git git-core tree gperf fakeroot dkms libgsoap1 libpthread-stubs0-dev libpthread-stubs0 libx11-dev subversion vim g++ bison openjdk zlib1g-dev flex libncurses5-dev gcc-4.4 g++-4.4 g++-4.4-multilib
裝完後,開始降級gcc , 放心,這不會影響到系統的情緒,就改個鏈接而已,不喜歡的話改回來就好
cd /usr/bin
sudo mv gcc gcc.bk
sudo ln -s gcc-4.4 gcc
sudo mv g++ g++.bk
sudo ln -s g++-4.4 g++
好了~~~完成,可以完美編譯了。
以上方法可以解決下面的一堆所謂坑爹的問題,哥也傻過了,你們就別傻改代碼了啦
- 錯誤: “_FORTIFY_SOURCE”重定義 [-Werror]
- external/mesa3d/src/glsl/linker.cpp:623:33: 警告: ‘virtual ir_visitor_status remap_variables(ir_instruction*, gl_shader*, hash_table*)::remap_visitor::visit(ir_dereference_variable*)’所隱藏 [-Woverloaded-virtual]
external/mesa3d/src/glsl/linker.cpp: 在函數‘void assign_varying_locations(gl_shader_program*, gl_shader*, gl_shader*)’中:
external/mesa3d/src/glsl/linker.cpp:1394:49: 錯誤: expected primary-expression before ‘,’ token
external/mesa3d/src/glsl/linker.cpp:1394:50: 錯誤: ‘varyings’在此作用域中尚未聲明
external/mesa3d/src/glsl/linker.cpp:1394:58: 錯誤: ‘offsetof’在此作用域中尚未聲明
external/mesa3d/src/glsl/linker.cpp:1395:48: 錯誤: expected primary-expression before ‘,’ token
external/mesa3d/src/glsl/linker.cpp:1412:47: 錯誤: expected primary-expression before ‘,’ token
external/mesa3d/src/glsl/linker.cpp:1412:48: 錯誤: ‘position’在此作用域中尚未聲明
external/mesa3d/src/glsl/linker.cpp:1414:47: 錯誤: expected primary-expression before ‘,’ token
external/mesa3d/src/glsl/linker.cpp:1414:48: 錯誤: ‘pointSize’在此作用域中尚未聲明
external/mesa3d/src/glsl/linker.cpp:1424:47: 錯誤: expected primary-expression before ‘,’ token
external/mesa3d/src/glsl/linker.cpp:1424:48: 錯誤: ‘position’在此作用域中尚未聲明
external/mesa3d/src/glsl/linker.cpp:1428:47: 錯誤: expected primary-expression before ‘,’ token
external/mesa3d/src/glsl/linker.cpp:1428:48: 錯誤: ‘frontFacingPointCoord’在此作用域中尚未聲明
external/mesa3d/src/glsl/linker.cpp:1431:47: 錯誤: expected primary-expression before ‘,’ token
external/mesa3d/src/glsl/linker.cpp:1431:48: 錯誤: ‘frontFacingPointCoord’在此作用域中尚未聲明
external/mesa3d/src/glsl/linker.cpp: 在函數‘void link_shaders(const gl_context*, gl_shader_program*)’中:
external/mesa3d/src/glsl/linker.cpp:1734:49: 錯誤: expected primary-expression before ‘,’ token
external/mesa3d/src/glsl/linker.cpp:1734:50: 錯誤: ‘fragColor’在此作用域中尚未聲明
external/mesa3d/src/glsl/linker.cpp:1734:59: 錯誤: ‘offsetof’在此作用域中尚未聲明
make: *** [out/host/linux-x86/obj/STATIC_LIBRARIES/libMesa_intermediates/src/glsl/linker.o] 錯誤 1
- reference ‘counts’ cannot be declared ‘mutable’ [-fpermissive]
external/oprofile/libpp/format_output.h
- external/llvm/lib/Support/Mutex.cpp:143: undefined reference to `pthread_mutex_trylock'
collect2: ld returned 1 exit status
- 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/gtest_main.cc:32:
external/gtest/src/../include/gtest/internal/gtest-param-util.h:122:11: error: ‘ptrdiff_t’ does not name a type
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
In file included from external/gtest/src/gtest-all.cc:38:0:
- host C++: llvm-rs-cc <= frameworks/compile/slang/slang_rs_export_foreach.cpp
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:247:23: error: variable ‘ParamName’ set but not used [-Werror=unused-but-set-variable]
cc1plus: all warnings being treated as errors