3、换用gcc与g++的较低版本
Ubuntu11.10自带的gcc与g++版本为4.6,用该版本编译android时会遇到一些错误,如:
1 host Prebuilt monkeyrunner (outhostlinux-x86objEXECUTABLESmonkeyrunner_intermediatesmonkeyrunner)
2 host C++ obbtool = frameworksbasetoolsobbtoolMain.cpp
3 命令行00 错误: “_FORTIFY_SOURCE”重定义[-Werror]
4 built-in00 附注: 这是先前定义的位置
5 cc1plus:所有的警告都被当作是错误
网上有文章说修改buildcorecomboHOST_linux-x86.mk文件,将
1 HOST_GLOBAL_CFLAGS += -D_FORTIFY_SOURCE=0
修改成
1 HOST_GLOBAL_CFLAGS += -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0
这种方法虽然能解决该问题,但也会引出新的问题,还要继续不断的修改,很麻烦,而且也会破坏android源码的原生状态。但是如果使用4.4版本的gcc与g++,则不会出现这些错误,方法如下:
通过gcc -v命令可以发现gcc库在usrlibgcci686-linux-gnu目录下,该目录下有当前系统支持的各种版本gcc库 。在安装gcc 4.4前该目录下是没有4.4目录的,安装gcc 4.4后该目录下就会多出4.4这个目录,且该4.4目录下有各种相应库文件。
ubuntu 32bit系统下安装gcc 4.4的最好方法是仅用以下两条命令,不需要其它命令,否则编译时可能会出错。
1 $sudo apt-get install gcc-4.4
2 $sudo apt-get install g++-4.4
装完后进入到usrbin目录下
1 $ls -l gcc
会显示以下结果
lrwxrwxrwx 1 root root 7 2011-10-29 0911 gcc - gcc-4.6
-rwxr-xr-x 1 root root 224544 2011-10-06 0547 gcc-4.4
-rwxr-xr-x 1 root root 302104 2011-09-17 0543 gcc-4.6
发现gcc链接到gcc-4.6, 需要将它改为链接到gcc-4.4,方法如下
1 $sudo mv gcc gcc.bak
2 $sudo ln -s gcc-4.4 gcc
同理,对g++也做同样的修改:
1 $ls -l g++
lrwxrwxrwx 1 root root 7 2011-08-14 1517 g++ - g++-4.6
-rwxr-xr-x 1 root root 228640 2011-10-06 0545 g++-4.4
-rwxr-xr-x 1 root root 306200 2011-09-17 0539 g++-4.6
需要将g++链接改为g++-4.4
1 $sudo mv g++ g++.bak
2 $sudo ln -s g++-4.4 g++
再查看gcc和g++版本号:
gcc -v
g++ -v
均显示gcc version 4.4.6 ,说明gcc 4.4安装成功。