android源码的编译问题总结

简介: 版权声明:您好,转载请留下本人博客的地址,谢谢 https://blog.csdn.net/hongbochen1223/article/details/47708233 由于目前的...
版权声明:您好,转载请留下本人博客的地址,谢谢 https://blog.csdn.net/hongbochen1223/article/details/47708233

由于目前的项目需要修改android的内核源码,所以我需要从android源码的编译开始学习.

下面看一下我的编译环境.
我使用的Ubuntu系统的版本是14.04,64位.
gcc版本:4.8.8

编译过程我是看着google开发者官网,以及结合别人的博客进行编译的.编译的过程会遇到很多问题,在这里,我就把我遇到的问题总结一些,以便以后用到的时候容易查看,也方便别人编译android的时候遇到相同的问题,便于查看.

问题一:java版本问题
这里写图片描述

这个问题描述的是我当前使用的java版本是”1.7”,而正确的版本是java se 1.6,所以我们需要更换java.

解决办法:

1:使用命令(因为我使用的是openjdk)

sudo apt-get remove openjdk-7-jre openjdk-7-jdk openjdk-7-jre-headless

2:如果你使用的是JDK,为了以后还会使用,先讲全局变量中的export语句使用’#’注释掉即可.

3:安装Java SE 1.6
4:从官网下载并且解压之后,配置环境变量即可

问题二:编译问题

这里写图片描述

解决方法:

1:找到android源代码/frameworks/base/tools/aapt/Android.mk文件,编辑

找到第31行的LOCAL_CFLAGS,后面添加-fpermissive

这里写图片描述

2:找到android源代码frameworks/base/libs/utils/Android.mk文件,编辑
找到第64行的LOCAL_CFLAGS,后面添加-fpermissive

这里写图片描述

问题三:

这里写图片描述

解决办法:

cd external/srec

wget "https://github.com/CyanogenMod/android_external_srec/commit/4d7ae7b79eda47e489669fbbe1f91ec501d42fb2.diff"

patch -p1 < 4d7ae7b79eda47e489669fbbe1f91ec501d42fb2.diff

rm -f 4d7ae7b79eda47e489669fbbe1f91ec501d42fb2.diff

cd ../..

问题四:

这里写图片描述

这个问题仅仅需要将dalvik/vm/native/dalvik_system_Zygote.cpp中添加一句”#include

#include <getopt.h>

问题六:

这里写图片描述

解决办法:
在文件development/tools/emulator/opengl/Android.mk中的第25行后面添加 -fpermissive

这里写图片描述

错误七:

这里写图片描述

解决办法:

在文件/development/tools/emulator/opengl/host/renderer/Android.mk文件中的LOCAL_CFLAGS += -O0 -g的下一行添加"LOCAL_LDLIBS += -lX11"

LOCAL_PATH:=$(call my-dir)
# host renderer process ###########################
$(call emugl-begin-host-executable,emulator_renderer)
$(call emugl-import,libOpenglRender)
LOCAL_SRC_FILES := main.cpp
LOCAL_CFLAGS    += -O0 -g
LOCAL_LDLIBS += -lX11
#ifeq ($(HOST_OS),windows)
#LOCAL_LDLIBS += -lws2_32
#endif
$(call emugl-end-module)

错误八:

这里写图片描述

解决办法:

将文件build/core/combo/HOST_linux-x86.mk中的
HOST_GLOBAL_CFLAGS += -D_FORTIFY_SOURCE=0
替换为
HOST_GLOBAL_CFLAGS += -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0

错误八:
这里写图片描述

解决办法:

将文件中frameworks/compile/slang/Android.mk第22行中的-werror移除

这里写图片描述

错误九:
这里写图片描述

解决办法:
在文件external/llvm/lib/ExecutionEngine/JIT/Intercept.cpp中添加头文件

#define _LARGEFILE64_SOURCE
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>

错误十:

这里写图片描述

解决办法:

安装perl switch库

sudo apt-get install libswitch-perl

错误十一:

external/oprofile/libpp/format_output.h:94:22: 错误: reference ‘counts’ cannot be declared ‘muta
external/oprofile/libpp/format_output.h:94:22: 错误: reference ‘counts’ cannot be declared ‘muta…
针对这种情况,需要修改external/oprofile/libpp/format_output.h:94行
mutable counts_t & counts为
counts_t & counts

错误十二:

这里写图片描述

解决办法:

修改文件external/llvm/llvm-host-build.mk
中添加 LOCAL_LDLIBS := -lpthread -ldl

错误十三:

external/gtest/src/../include/gtest/gtest-param-test.h:1185:28: required from here
external/gtest/src/../include/gtest/internal/gtest-param-util-generated.h:77:26: error: ‘ValuesIn’ was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]
return ValuesIn(array);

解决办法:

将文件/external/gtest/src/Android.mk中所有的”LOCAL_CFLAGS += -O0”修改为”LOCAL_CFLAGS += -O0 -fpermissive”

错误十四:
make: *
[out/host/linux-x86/obj/STATIC_LIBRARIES/libgtest_host_intermediates/gtest-all.o] Error 1

解决方法:

gedit external/gtest/include/gtest/internal/gtest-param-util.h 添加:

#include <cstddef>
目录
相关文章
|
13天前
|
XML Java Android开发
Android实现自定义进度条(源码+解析)
Android实现自定义进度条(源码+解析)
47 1
|
13天前
|
Java Android开发
Android反编译查看源码
Android反编译查看源码
20 0
|
2月前
|
Android开发
安卓SO层开发 -- 编译指定平台的SO文件
安卓SO层开发 -- 编译指定平台的SO文件
29 0
|
3月前
|
数据采集 小程序 数据可视化
智慧校园电子班牌管理系统源码 Java Android原生
家长通过家长小程序端随时了解孩子在校的情况,实时接收学生的出勤情况,学生到校、离校时间。随时了解学生在校的表现、学生成绩排名,及时与教师沟通,关注孩子的健康成长。
30 0
智慧校园电子班牌管理系统源码 Java Android原生
|
3月前
|
Java Shell Linux
Android——编译(二):android.mk的相关知识
Android——编译(二):android.mk的相关知识
91 0
|
3月前
|
算法 Java 定位技术
分享104个益智休闲安卓游戏源码,总有一款适合你
分享104个益智休闲安卓游戏源码,总有一款适合你
141 1
|
3月前
|
Shell Android开发
RK android13编译环境搭建与常用编译命令
RK android13编译环境搭建与常用编译命令
67 0
|
1月前
|
定位技术 API 数据库
基于Android的在线移动电子导航系统的研究与实现(论文+源码)_kaic
基于Android的在线移动电子导航系统的研究与实现(论文+源码)_kaic
|
1月前
|
搜索推荐 测试技术 定位技术
基于Android的自助导游系统的设计与实现(论文+源码)_kaic
基于Android的自助导游系统的设计与实现(论文+源码)_kaic
|
1月前
|
Java 关系型数据库 应用服务中间件
基于Android的人事管理系统设计与实现(论文+源码)_kaic
基于Android的人事管理系统设计与实现(论文+源码)_kaic