Ubuntu12.10 64bit版编译android4.0.*版本系统相关问题

来源:互联网 发布:水弹的数据 编辑:程序博客网 时间:2024/06/07 08:27

ubuntu12.10 64bit版,编译android4.0和android4.0.4(本人试过的版本)版本会出现各种各样的问题:

例如:

frameworks/base/include/utils/KeyedVector.h:193:31: error: ‘indexOfKey’ was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]

'SetState' was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive] 

等等问题;总之是一些莫名其妙的问题。

看到后面的[-fpermissive] 搜到一篇文章提到在Android.mk中改编译选项的做法,试了几个,个别问题解决了,但是类似问题好多个,依然编译出错,最后决定试试换gcc和g++编译器版本的方法。

ubuntu12.10 64bit默认gcc版本是4.7.2

可以用 ls -l /usr/bin/gcc* 查看

例如:

hanson@hanson:~$ ls /usr/bin/gcc* -l
lrwxrwxrwx 1 root root      7  4月 10 23:56 /usr/bin/gcc -> gcc-4.7
-rwxr-xr-x 1 root root 578808  9月 22  2012 /usr/bin/gcc-4.7
-rwxr-xr-x 1 root root  22832  9月 22  2012 /usr/bin/gcc-ar-4.7
-rwxr-xr-x 1 root root  22832  9月 22  2012 /usr/bin/gcc-nm-4.7
-rwxr-xr-x 1 root root  22832  9月 22  2012 /usr/bin/gcc-ranlib-4.7


然后开始换版本:

执行:

sudo apt-get install gcc-4.4

sudo apt-get install g++-4.4


cd  到  /usr/bin目录查看是否安装好gcc和g++4.4:

hanson@hanson:/usr/bin$ ls gcc* -l
lrwxrwxrwx 1 root root      7  4月 10 23:56 gcc -> gcc-4.7
-rwxr-xr-x 1 root root 255168  8月 21  2012 gcc-4.4   这个表示4.4已经安装上了
-rwxr-xr-x 1 root root 578808  9月 22  2012 gcc-4.7
-rwxr-xr-x 1 root root  22832  9月 22  2012 gcc-ar-4.7
-rwxr-xr-x 1 root root  22832  9月 22  2012 gcc-nm-4.7
-rwxr-xr-x 1 root root  22832  9月 22  2012 gcc-ranlib-4.7


然后把gcc备份一下,然后建立新的软链接指向gcc-4.4

hanson@hanson:/usr/bin$ sudo mv gcc gcc_old

hanson@hanson:/usr/bin$ sudo ln -s gcc-4.4 gcc

hanson@hanson:/usr/bin$ ls gcc* -l   
lrwxrwxrwx 1 root root      7  4月 24 11:33 gcc -> gcc-4.4   ------查看软链接是否链接到gcc-4.4
-rwxr-xr-x 1 root root 255168  8月 21  2012 gcc-4.4
-rwxr-xr-x 1 root root 578808  9月 22  2012 gcc-4.7
-rwxr-xr-x 1 root root  22832  9月 22  2012 gcc-ar-4.7
-rwxr-xr-x 1 root root  22832  9月 22  2012 gcc-nm-4.7
lrwxrwxrwx 1 root root      7  4月 10 23:56 gcc_old -> gcc-4.7
-rwxr-xr-x 1 root root  22832  9月 22  2012 gcc-ranlib-4.7

g++同理:

hanson@hanson:/usr/bin$ sudo mv g++ g++_old
hanson@hanson:/usr/bin$ sudo ln -s g++-4.4 g++  ------查看软链接是否链接到g++-4.4
hanson@hanson:/usr/bin$ ls -l g++*
lrwxrwxrwx 1 root root      7  4月 24 11:34 g++ -> g++-4.4
-rwxr-xr-x 1 root root 259264  8月 21  2012 g++-4.4
-rwxr-xr-x 1 root root 582904  9月 22  2012 g++-4.7
lrwxrwxrwx 1 root root      7  9月 22  2012 g++_old -> g++-4.7


然后用 gcc -v和g++ -v看看软链接替换是否成功;


接下来还需要一个重要的操作:

hanson@hanson:/usr/bin$ sudo apt-get install g++-4.4-multilib

此安装是为了解决g++ selected multilib '32' not installed的错误,如果不安装会编译不通过。


原创粉丝点击