编译windows版本的android sdk时,说明上说
Under Ubuntu, you will need the following extra packages:
$ sudo apt-get install mingw32 tofrodos
mingw32 is the cross-compiler, tofrodos adds a unix2dos command
所以要先sudo apt-get install mingw32 tofrodos,不巧的是本人在执行此命令时不太顺利,遇到了如下的错误提示:
update-alternatives javah can't be master:it is a slave of javac
网上查不到解决办法,琢磨了两天才弄明白。原来要想解决问题还是了解下update-alternatives,这里就不细说了,网上到处可以查得到。还是来说说问题产生的原因吧。
原因: 在系统中javah被定义成为了javac link 的一个slave link,可以看到
@bogon:~$ update-alternatives --display javac
javac - manual mode
link currently points to /usr/lib/jvm/java-1.5.0-sun/bin/javac
/usr/lib/jvm/java-1.5.0-sun/bin/javac - priority 100
slave javah: /usr/lib/jvm/java-1.5.0-sun/bin/javah
/usr/lib/jvm/java-6-sun/bin/javac - priority 63
slave javac.1.gz: /usr/lib/jvm/java-6-sun/man/man1/javac.1.gz
Current `best' version is /usr/lib/jvm/java-1.5.0-sun/bin/javac.
可以看到javac link这个master link确实存在一个javah slave link。
将这个slave link删除即可解决,由于没找到删除slave link相关命令,就将带有javah slave link的javac master删除了,命令:
@bogon:~$sudo update-alternatives --remove javac /usr/lib/jvm/java-1.5.0-sun/bin/javac
这样master link被删除时它下面的所有slave link也会消失。如果需要这个master则再重新建立即可,只是要注意不要再创建javah slave link。
让我们来查看一下删除一个master link 后的javac
@bogon:~$ update-alternatives --display javac
javac - auto mode
link currently points to /usr/lib/jvm/java-6-sun/bin/javac
/usr/lib/jvm/java-6-sun/bin/javac - priority 63
slave javac.1.gz: /usr/lib/jvm/java-6-sun/man/man1/javac.1.gz
Current `best' version is /usr/lib/jvm/java-6-sun/bin/javac.
能看到,是少了一个master link,同时javah slave link也没了,可以继续apt-get install mingw32了。