Ubuntu12.10 64bit版編譯android4.0.*版本系統相關問題

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的錯誤,如果不安裝會編譯不通過。


發佈了41 篇原創文章 · 獲贊 18 · 訪問量 34萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章