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>
目录
相关文章
|
6月前
|
XML 搜索推荐 Android开发
Android改变进度条控件progressbar的样式(根据源码修改)
本文介绍了如何基于Android源码自定义ProgressBar样式。首先分析了系统源码中ProgressBar样式的定义,发现其依赖一张旋转图片实现动画效果。接着分两步指导开发者实现自定义:1) 模仿源码创建一个旋转动画XML文件(放置在drawable文件夹),修改图片为自定义样式;2) 在UI控件中通过`indeterminateDrawable`属性应用该动画。最终实现简单且个性化的ProgressBar效果,附带效果图展示。
383 2
|
7月前
|
NoSQL 应用服务中间件 PHP
布谷一对一直播源码android版环境配置流程及功能明细
部署需基于 CentOS 7.9 系统,硬盘不低于 40G,使用宝塔面板安装环境,包括 PHP 7.3(含 Redis、Fileinfo 扩展)、Nginx、MySQL 5.6、Redis 和最新 Composer。Swoole 扩展需按步骤配置。2021.08.05 后部署需将站点目录设为 public 并用 ThinkPHP 伪静态。开发环境建议 Windows 操作系统与最新 Android Studio,基础配置涉及 APP 名称修改、接口域名更换、包名调整及第三方登录分享(如 QQ、微信)的配置,同时需完成阿里云与腾讯云相关设置。
|
Java Android开发 C++
Android Studio JNI 使用模板:c/cpp源文件的集成编译,快速上手
本文提供了一个Android Studio中JNI使用的模板,包括创建C/C++源文件、编辑CMakeLists.txt、编写JNI接口代码、配置build.gradle以及编译生成.so库的详细步骤,以帮助开发者快速上手Android平台的JNI开发和编译过程。
998 1
|
Ubuntu 开发工具 Android开发
Repo下载AOSP源码:基于ubuntu22.04 环境配置,android-12.0.0_r32
本文介绍了在基于Ubuntu 22.04的环境下配置Python 3.9、安装repo工具、下载和同步AOSP源码包以及处理repo同步错误的详细步骤。
1146 0
Repo下载AOSP源码:基于ubuntu22.04 环境配置,android-12.0.0_r32
|
Linux API 开发工具
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
ijkplayer是由B站研发的移动端播放器,基于FFmpeg 3.4,支持Android和iOS。其源码托管于GitHub,截至2024年9月15日,获得了3.24万星标和0.81万分支,尽管已停止更新6年。本文档介绍了如何在Linux环境下编译ijkplayer的so库,以便在较新的开发环境中使用。首先需安装编译工具并调整/tmp分区大小,接着下载并安装Android SDK和NDK,最后下载ijkplayer源码并编译。详细步骤包括环境准备、工具安装及库编译等。更多FFmpeg开发知识可参考相关书籍。
430 0
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
|
编译器 Android开发
配置环境变量,使CMakeLists.txt可直接使用Android NDK工具链编译项目
配置环境变量,使CMakeLists.txt可直接使用Android NDK工具链编译项目
|
Ubuntu Shell API
Ubuntu 64系统编译android arm64-v8a 的openssl静态库libssl.a和libcrypto.a
Ubuntu 64系统编译android arm64-v8a 的openssl静态库libssl.a和libcrypto.a
|
开发工具 git 索引
repo sync 更新源码 android-12.0.0_r34, fatal: 不能重置索引文件至版本 ‘v2.27^0‘。
本文描述了在更新AOSP 12源码时遇到的repo同步错误,并提供了通过手动git pull更新repo工具来解决这一问题的方法。
529 1
|
Android开发 Docker 容器
docker中编译android aosp源码,出现Build sandboxing disabled due to nsjail error
在使用Docker编译Android AOSP源码时,如果遇到"Build sandboxing disabled due to nsjail error"的错误,可以通过在docker run命令中添加`--privileged`参数来解决权限不足的问题。
2409 1
|
API 开发工具 Android开发
Android源码下载
Android源码下载
2127 0

热门文章

最新文章