Ubuntu 16.04编译Android,make 版本过高导致编译失败的问题
2017-07-15 17:10
676 查看
如题,近期在Ubuntu 16.04上编译Android 6.0源码的时候出现报错,记录如下:
make 4.0
Android M 源码
由于在编译的时候使用了 -j4 来使用多核进行多线程编译,导致某些报错信息被隐藏,去掉-j4选项重新编译,看到完整报错如下:
可以看到问题最初的来源在
解压
cd
./configure
make
sudo make install
这样能够看到
此时make 4.0 版本的位置为
除了上面直接指明路径外,还可以使用update-alternatives 工具来进行管理,具体怎么使用,还请自行Google。但是我个人觉得直接指明路径是最简单的方式了。
我的开发环境:
Ubuntu 16.04make 4.0
Android M 源码
大致报错如下:
/home/fei/dev/android/source/prada/kernel/drivers/input/touchscreen/focaltech/Makefile:9: *** missing separator。 停止。
具体如下:
使用 make target-files-package -j4 命令来编译,起初的报错信息如下:make[2]: *** [drivers/modules.builtin] Error 2 make[2]: *** 正在等待未完成的任务.... make[2]: *** wait: 没有子进程。 停止。 Makefile:145: recipe for target 'sub-make' failed make[1]: *** [sub-make] Error 2 make[1]: Leaving directory '/home/fei/dev/android/source/prada/kernel' kernel/AndroidKernel.mk:132: recipe for target 'out/target/product/prada/obj/KERNEL_OBJ/arch/arm64/boot/Image.gz-dtb' failed
由于在编译的时候使用了 -j4 来使用多核进行多线程编译,导致某些报错信息被隐藏,去掉-j4选项重新编译,看到完整报错如下:
/home/fei/dev/android/source/prada/kernel/drivers/input/touchscreen/focaltech/Makefile:9: *** missing separator。 停止。
/home/fei/dev/android/source/prada/kernel/scripts/Makefile.modbuiltin:54: recipe for target 'drivers/input/touchscreen/focaltech' failed
make[5]: *** [drivers/input/touchscreen/focaltech] Error 2
make[5]: *** 正在等待未完成的任务....
/home/fei/dev/android/source/prada/kernel/scripts/Makefile.modbuiltin:54: recipe for target 'drivers/input/touchscreen' failed
make[4]: *** [drivers/input/touchscreen] Error 2
/home/fei/dev/android/source/prada/kernel/scripts/Makefile.modbuiltin:54: recipe for target 'drivers/input' failed
make[3]: *** [drivers/input] Error 2
/home/fei/dev/android/source/prada/kernel/Makefile:1116: recipe for target 'drivers/modules.builtin' failed
make[2]: *** [drivers/modules.builtin] Error 2 make[2]: *** 正在等待未完成的任务.... make[2]: *** wait: 没有子进程。 停止。 Makefile:145: recipe for target 'sub-make' failed make[1]: *** [sub-make] Error 2 make[1]: Leaving directory '/home/fei/dev/android/source/prada/kernel' kernel/AndroidKernel.mk:132: recipe for target 'out/target/product/prada/obj/KERNEL_OBJ/arch/arm64/boot/Image.gz-dtb' failed
可以看到问题最初的来源在
/home/fei/dev/android/source/prada/kernel/drivers/input/touchscreen/focaltech/Makefile文件中的第九行,查看Makefile指定行如下:
ldflag obj-y += fts_ts.o,没有发现什么异常,故怀疑是Ubuntu16.04中自带的make版本过高而Makefile语法没有跟上更新导致make无法正确识别,所以查看make版本为
4.0,查看同事能正常编译的make版本为
3.8.1,所以安装底版本再次测试,最终成功编译。
安装make 3.8.1
直接在这里下载make 3.8.1解压
cd
./configure
make
sudo make install
这样能够看到
/usr/local/bin/make就是新安装的make 3.8.1 再次编译的时候明确知名make的版本号就行了,类似于这样
/usr/local/bin/make target-files-package -j4问题就解决了
此时make 4.0 版本的位置为
/usr/bin/make, 使用的时候指明即可,默认为make 4.0
除了上面直接指明路径外,还可以使用update-alternatives 工具来进行管理,具体怎么使用,还请自行Google。但是我个人觉得直接指明路径是最简单的方式了。
参考
https://askubuntu.com/questions/860066/is-it-any-way-to-temporarily-install-make-3-81相关文章推荐
- 64位Ubuntu 12.04下编译android gcc版本过高问题解决
- 64位Ubuntu 11.10下编译android gcc版本过高问题解决
- 解决Ubuntu升级到16后,导致Android编译出错的问题
- 高版本的Ubuntu环境下android编译注意的问题
- ubuntu 开机黑屏 (设置android编译环境时导致该问题)
- cudnn版本问题导致tensorflow GPU源码编译失败
- ubuntu1604编译android5.1(android L)失败error: unsupportedreloc 43等问题
- Ubuntu16.04系统中BusyBox在配置arm交叉编译环境时make失败
- ubuntu 11.10 编译android aosp 由于gcc版本过高引起的错误,安装 gcc 4.4
- ANDROID源码编译的make版本问题
- Ubuntu10.04 交叉编译工具glibc2.3.6制作gcc版本过高问题
- ubuntu 编译android时,java和javac版本不同引起的问题。
- Ubuntu12.10 64bit版编译android4.0.*版本系统相关问题
- 使用make编译android项目时,修改了文件xml文件名称,导致编译出错的问题原因
- Android 开发环境搭建---Android 编译需要的sun-java5-jdk在ubuntu10.04以上版本的安装问题
- android版本编译问题
- ACE版本问题导致编译问题
- Ubuntu10.04编译android2.2源码出错问题解决
- ubuntu下编译Android出现的问题 推荐
- ubuntu11.0.4下编译Android2.3源码过程遇到问题解决【不断更新】