自己用的是Z71的手机,另称Moto xt502或首派A60,不久前在http://wiki.cyanogenmod.com/wiki/Commtiva_Z71:_Compile_CyanogenMod_(Linux)
居然找到了Z71源代码的下载和编译说明,然后就开是漫长的下载过程。
repo sync了多次,经常会中途停掉,完全不能进行下去。使用代理服务器也不行。
这几天忍不住又试了一次,居然同步完成了。起先是用VMware在ubuntu下进行下一步的操作,要求连接手机,虽然已经链接,但调用./extract-files.sh时总是提示insufficient permissions error。
起初没有在意,以为是VMWare下无法链接手机,只好把所有源码转移到真机下。中间本想使用压缩的,虚拟机硬盘不够用了,搞了好久后只好用划了10g空间并把源码添加到一个ISO里,最终拷贝了出来。(直接把源码从虚拟机拷到windows会报很多命名规则错误,不知道linux和windows的vmware镜像是否可通用,有空试一下)。
真是费了很大劲才把源码统统拷贝到ubuntu实机中,接着,出现几个问题:
1,在源码文件夹下使用多数命令都会报权限错误,虽然也使用了chmod为文件夹增加777权限,但其实我不知道只用chmod就只能给指定文件夹加权限,而子文件夹不受影响,所以后来改为chmod -r 777 yourfolder,问题解决。
2,还是在虚拟机里遇到的insufficient permissions error,感觉前面的时间全浪费了。
解决办法
- sudo -s
- ./adb kill-server
- ./adb devices
Install glibc-devel if you are going to develop programs which will use the standard C libraries.
# apt-get install g++-multilib。
collect2: ld returned 1 exit status
make: *** Waiting for unfinished jobs....
Copy: out/target/product/z71/system/etc/wifi/hostapd.conf
prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/../lib/gcc/arm-eabi/4.4.3/../../../../arm-eabi/bin/ld: out/target/product/z71/obj/STATIC_LIBRARIES/libwebcore_intermediates/libwebcore.a(ImageDocument.o): in function WebCore::ImageDocument::windowSizeChanged():external/webkit/WebCore/loader/ImageDocument.cpp:329: error: undefined reference to 'WebCore::CSSStyleDeclaration::removeProperty(WebCore::String const&, int&)'
prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/../lib/gcc/arm-eabi/4.4.3/../../../../arm-eabi/bin/ld: out/target/product/z71/obj/STATIC_LIBRARIES/libwebcore_intermediates/libwebcore.a(ImageDocument.o): in function WebCore::ImageDocument::windowSizeChanged():external/webkit/WebCore/loader/ImageDocument.cpp:331: error: undefined reference to 'WebCore::CSSStyleDeclaration::setProperty(WebCore::String const&, WebCore::String const&, int&)'
collect2: ld returned 1 exit status
make: *** [out/target/product/z71/obj/SHARED_LIBRARIES/libwebcore_intermediates/LINKED/libwebcore.so] Error 1
产生swap文件 要创建swap文件,执行dd命令,新增一个256MB的swap文件: # dd if=/dev/zero of=/tmp/myswap bs=32k count=8192 (bs=32k指定每个扇区占用32kb,读入了8192+0个区段,输出了8192+0个区段) 注意:bs参数的目的在于指定每次读取及输入多少个bytes;由于磁盘存取的最小单位为扇区,因此设置bs也等于设置每个扇区的大小;而count的目的则在指定可以使用多少个扇区.因此,可以使用的硬盘空间就等于bs*count.以上范例为例,可以使用的硬盘空间等于32*8192=262144(KB),亦等于256MB. 执行上述命令后,会在/tmp目录中创建一个256MB的myswap文件 格式华及启动swap文件 接下来执行mkswap命令,将myswap文件格式化成s文件系统,系统才能使用,切换到/tmp目录,并执行以下命令: # mkswap myswap (#将文件格式化为swap文件格式) setting up swapspace version 1 , size = 262144 KB # swapon /tmp/myswap (#启动swap分区) 要停止使用新创建的swap文件,只要执行 swapoff /tmp/myswap命令即可. 开机时自动启动新添加的swap分区 如果每次开机后都要执行swapon命令启动swap分区或者文件,这太麻烦了.这时可以利用文字编辑器在/etc/fstab文件加一行,好让开机时自动启动swap分区及文件: /dec/hdb5 swap swap defaults 0 0 (开机时启动此swap分区) /tmp/myswap swap swap defaults 0 0 (开机时启动此swap文件)
我就这么编译通过的
执行命令
adb pull /system/bin/hostapd vendor/commtiva/z71/proprietary/bin/
不过hostapd应该是可以正常生成的,我在zte/blade的文件夹下找到一个hostapd的可执行文件,而这个文件在其他任何文件夹里都是没有的。我在怀疑某个配置文件错误的把z71的hostapd指向了zte,很可能是笔误。
这个有空再搞了,暂时先用楼上的办法搞一个版本出来。