Android源码编译错误

标签 android linux build compiler-errors makefile

我在构建 Android 时遵循了这些步骤:

  1. http://source.android.com/source/initializing.html
  2. http://source.android.com/source/downloading.html
  3. http://source.android.com/source/building.html

注意:我运行的是 Linux Mint 13 64 位。 (我几乎是 Linux 的新手)。

到目前为止,我遇到过很多问题,但我已经通过谷歌搜索解决了,而且我完全有可能搞砸了一些我不应该搞砸的事情。我目前面临且无法规避/解决的问题如下:

在第三步(构建)中,当发出命令 make -j4 时,我得到以下输出:

============================================
PLATFORM_VERSION_CODENAME=AOSP
PLATFORM_VERSION=4.0.4.0.4.0.4
TARGET_PRODUCT=full
TARGET_BUILD_VARIANT=eng
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=arm
TARGET_ARCH_VARIANT=armv7-a
HOST_ARCH=x86
HOST_OS=linux
HOST_OS_EXTRA=Linux-3.2.0-23-generic-x86_64-with-LinuxMint-13-maya
HOST_BUILD_TYPE=release
BUILD_ID=OPENMASTER
OUT_DIR=out
============================================
host Executable: acp (out/host/linux-x86/obj/EXECUTABLES/acp_intermediates/acp)
host Executable: aapt (out/host/linux-x86/obj/EXECUTABLES/aapt_intermediates/aapt)
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.6/libstdc++.so when searching for -lstdc++
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.6/libstdc++.a when searching for -lstdc++
/usr/bin/ld: cannot find -lstdc++
collect2: ld returned 1 exit status
make: *** [out/host/linux-x86/obj/EXECUTABLES/acp_intermediates/acp] Error 1
make: *** Waiting for unfinished jobs....
host Executable: aidl (out/host/linux-x86/obj/EXECUTABLES/aidl_intermediates/aidl)
logtags: out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/src/telephony/java/com/android/internal/telephony/EventLogTags.java <= frameworks/base/telephony/java/com/android/internal/telephony/EventLogTags.logtags
/usr/bin/ld: cannot find -lz
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.6/libstdc++.so when searching for -lstdc++
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.6/libstdc++.a when searching for -lstdc++
/usr/bin/ld: cannot find -lstdc++
collect2: ld returned 1 exit status
make: *** [out/host/linux-x86/obj/EXECUTABLES/aapt_intermediates/aapt] Error 1
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.6/libstdc++.so when searching for -lstdc++
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.6/libstdc++.a when searching for -lstdc++
/usr/bin/ld: cannot find -lstdc++
collect2: ld returned 1 exit status
make: *** [out/host/linux-x86/obj/EXECUTABLES/aidl_intermediates/aidl] Error 1

ps:请随时向我询问有关我的环境的更多详细信息,我会提供它,只是我不确定还应该包括什么,我不想让这篇文章变得太难阅读。

感谢您的帮助。

@homer_simpson 我想我用“解决了丢失的 libz 开发包” “sudo apt-get 安装 zlib1g-dev”

但是当我尝试“sudo apt-get install libstdc++”时,我得到以下输出:

Reading package lists... Done
Building dependency tree       
Reading state information... Done
Note, selecting 'libstdc++-dev-armel-cross' for regex 'libstdc+'
Note, selecting 'libstdc++6-4.4-doc' for regex 'libstdc+'
Note, selecting 'libstdc++6-4.2-dbg-armel-cross' for regex 'libstdc+'
Note, selecting 'libstdc++5' for regex 'libstdc+'
Note, selecting 'libstdc++6' for regex 'libstdc+'
Note, selecting 'libstdc++6-armel-cross-armhf' for regex 'libstdc+'
Note, selecting 'libstdc++6-4.1-dbg' for regex 'libstdc+'
Note, selecting 'libstdc++-dev-armhf-cross' for regex 'libstdc+'
Note, selecting 'libstdc++6-4.1-doc' for regex 'libstdc+'
Note, selecting 'libstdc++6-4.2-dbg-armhf-cross' for regex 'libstdc+'
Note, selecting 'libstdc++2.9-dev' for regex 'libstdc+'
Note, selecting 'libstdc++6-4.4-pic' for regex 'libstdc+'
Note, selecting 'libstdc++6-4.6-armhf-cross-dbg-armel' for regex 'libstdc+'
Note, selecting 'libstdc++6-4.3-dbg-armel-cross' for regex 'libstdc+'
Note, selecting 'libstdc++6-dev-armel-dcv1' for regex 'libstdc+'
Note, selecting 'libstdc++6-4.3-dbg-armhf-cross' for regex 'libstdc+'
Note, selecting 'libstdc++-dev-armhf-dcv1' for regex 'libstdc+'
Note, selecting 'libstdc++6-4.5-dbg' for regex 'libstdc+'
Note, selecting 'libstdc++6-4.5-dev' for regex 'libstdc+'
Note, selecting 'libstdc++6-4.4-dbg-armel-cross' for regex 'libstdc+'
Note, selecting 'libstdc++6-4.5-doc' for regex 'libstdc+'
Note, selecting 'libstdc++-dev' for regex 'libstdc+'
Note, selecting 'libstdc++2.10-dev' for regex 'libstdc+'
Note, selecting 'libstdc++2.9-glibc2.1-dev' for regex 'libstdc+'
Note, selecting 'libstdc++6-dbg-armel-dcv1' for regex 'libstdc+'
Note, selecting 'libstdc++6-4.2-dbg' for regex 'libstdc+'
Note, selecting 'libstdc++6-4.4-dbg-armhf-cross' for regex 'libstdc+'
Note, selecting 'libstdc++6-4.2-doc' for regex 'libstdc+'
Note, selecting 'libstdc++6-armhf-dcv1' for regex 'libstdc+'
Note, selecting 'libstdc++6-pic-armel-dcv1' for regex 'libstdc+'
Note, selecting 'libstdc++6-4.5-pic' for regex 'libstdc+'
Note, selecting 'libstdc++6-4.5-dbg-armel-cross' for regex 'libstdc+'
Note, selecting 'libstdc++6-4.4-dev-armel-cross' for regex 'libstdc+'
Note, selecting 'libstdc++6-4.4-pic-armel-cross' for regex 'libstdc+'
Note, selecting 'libstdc++6-4.5-dbg-armhf-cross' for regex 'libstdc+'
Note, selecting 'libstdc++5-3.3-dbg-armel-cross' for regex 'libstdc+'
Note, selecting 'libstdc++6-4.4-dev-armhf-cross' for regex 'libstdc+'
Note, selecting 'libstdc++6-4.6-dbg-armel-cross' for regex 'libstdc+'
Note, selecting 'libstdc++6-4.6-dbg' for regex 'libstdc+'
Note, selecting 'libstdc++6-4.6-dev' for regex 'libstdc+'
Note, selecting 'libstdc++6-4.6-doc' for regex 'libstdc+'
Note, selecting 'libstdc++6-4.5-dev-armel-cross' for regex 'libstdc+'
Note, selecting 'libstdc++6-4.4-pic-armhf-cross' for regex 'libstdc+'
Note, selecting 'libstdc++6-dev-armhf-dcv1' for regex 'libstdc+'
Note, selecting 'libstdc++5-3.3-dbg-armhf-cross' for regex 'libstdc+'
Note, selecting 'libstdc++5-dbg' for regex 'libstdc+'
Note, selecting 'libstdc++5-doc' for regex 'libstdc+'
Note, selecting 'libstdc++6-4.5-pic-armel-cross' for regex 'libstdc+'
Note, selecting 'libstdc++6-4.6-dbg-armhf-cross' for regex 'libstdc+'
Note, selecting 'libstdc++6-4.3-dbg' for regex 'libstdc+'
Note, selecting 'libstdc++6-armel-cross' for regex 'libstdc+'
Note, selecting 'libstdc++6-4.3-dev' for regex 'libstdc+'
Note, selecting 'libstdc++6-4.5-dev-armhf-cross' for regex 'libstdc+'
Note, selecting 'libstdc++6-4.3-doc' for regex 'libstdc+'
Note, selecting 'libstdc++6-4.6-pic' for regex 'libstdc+'
Note, selecting 'libstdc++5-dbg-armel-cross' for regex 'libstdc+'
Note, selecting 'libstdc++6-4.0-dbg-armel-cross' for regex 'libstdc+'
Note, selecting 'libstdc++6-4.6-dev-armel-cross' for regex 'libstdc+'
Note, selecting 'libstdc++6-4.5-pic-armhf-cross' for regex 'libstdc+'
Note, selecting 'libstdc++6-armhf-cross' for regex 'libstdc+'
Note, selecting 'libstdc++6-4.0-dbg' for regex 'libstdc+'
Note, selecting 'libstdc++6-dbg-armhf-dcv1' for regex 'libstdc+'
Note, selecting 'libstdc++6-armhf-cross-armel' for regex 'libstdc+'
Note, selecting 'libstdc++6-4.6-pic-armel-cross' for regex 'libstdc+'
Note, selecting 'libstdc++6-4.0-doc' for regex 'libstdc+'
Note, selecting 'libstdc++2.8-dev' for regex 'libstdc+'
Note, selecting 'libstdc++6-pic-armhf-dcv1' for regex 'libstdc+'
Note, selecting 'libstdc++5-dbg-armhf-cross' for regex 'libstdc+'
Note, selecting 'libstdc++6-4.0-dbg-armhf-cross' for regex 'libstdc+'
Note, selecting 'libstdc++6-4.6-dev-armhf-cross' for regex 'libstdc+'
Note, selecting 'libstdc++-dev-armel-dcv1' for regex 'libstdc+'
Note, selecting 'libstdc++5-3.3-dbg' for regex 'libstdc+'
Note, selecting 'libstdc++6-dbg-armel-cross' for regex 'libstdc+'
Note, selecting 'libstdc++6-4.1-dbg-armel-cross' for regex 'libstdc+'
Note, selecting 'libstdc++5-3.3-doc' for regex 'libstdc+'
Note, selecting 'libstdc++6-4.6-pic-armhf-cross' for regex 'libstdc+'
Note, selecting 'libstdc++3.0-dev' for regex 'libstdc+'
Note, selecting 'libstdc++6-4.6-armel-cross-dbg-armhf' for regex 'libstdc+'
Note, selecting 'libstdc++6-dbg' for regex 'libstdc+'
Note, selecting 'libstdc++6-doc' for regex 'libstdc+'
Note, selecting 'libstdc++6-dbg-armhf-cross' for regex 'libstdc+'
Note, selecting 'libstdc++6-4.1-dbg-armhf-cross' for regex 'libstdc+'
Note, selecting 'libstdc++6-4.4-dbg' for regex 'libstdc+'
Note, selecting 'libstdc++6-4.4-dev' for regex 'libstdc+'
Note, selecting 'libstdc++6-armel-dcv1' for regex 'libstdc+'
Note, selecting 'libstdc++6-armel-cross' instead of 'libstdc++6-armel-dcv1'
Note, selecting 'libstdc++6-armhf-cross' instead of 'libstdc++6-armhf-dcv1'
libstdc++6 is already the newest version.
libstdc++6-4.6-dev is already the newest version.
libstdc++6-4.6-dev set to manually installed.
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 libstdc++6-4.5-dbg : Conflicts: libstdc++6-4.4-dbg but 4.4.7-1ubuntu2 is to be installed
 libstdc++6-4.5-dbg-armel-cross : Conflicts: libstdc++6-4.4-dbg-armel-cross but 4.4.7-1ubuntu2cross1.52 is to be installed
 libstdc++6-4.5-dbg-armhf-cross : Conflicts: libstdc++6-4.4-dbg-armhf-cross but 4.4.7-1ubuntu2cross1.52 is to be installed
 libstdc++6-4.5-doc : Conflicts: libstdc++6-4.4-doc but 4.4.7-1ubuntu2 is to be installed
 libstdc++6-4.6-dbg : Conflicts: libstdc++6-4.4-dbg but 4.4.7-1ubuntu2 is to be installed
                      Conflicts: libstdc++6-4.5-dbg but 4.5.3-12ubuntu2 is to be installed
 libstdc++6-4.6-dbg-armel-cross : Conflicts: libstdc++6-4.4-dbg-armel-cross but 4.4.7-1ubuntu2cross1.52 is to be installed
                                  Conflicts: libstdc++6-4.5-dbg-armel-cross but 4.5.3-12ubuntu2cross1.61 is to be installed
 libstdc++6-4.6-dbg-armhf-cross : Conflicts: libstdc++6-4.4-dbg-armhf-cross but 4.4.7-1ubuntu2cross1.52 is to be installed
                                  Conflicts: libstdc++6-4.5-dbg-armhf-cross but 4.5.3-12ubuntu2cross1.61 is to be installed
 libstdc++6-4.6-doc : Conflicts: libstdc++6-4.4-doc but 4.4.7-1ubuntu2 is to be installed
                      Conflicts: libstdc++6-4.5-doc but 4.5.3-12ubuntu2 is to be installed
E: Unable to correct problems, you have held broken packages.

最佳答案

我从来没有自己构建过 Android。但看起来您在 Linux 发行版上缺少 libz 和 libstdc++ 的开发包。

关于Android源码编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11235570/

相关文章:

android - 添加类似于 iOS 设备工具栏的底部工具栏

PHP 警告 : exec(): Unable to fork

java - 编译并构建 asmack 的 jar

android - 在 android gradle 3.6.1 中运行构建任务后未生成 Jar

java - 使用 gradle 的 3 个项目的复合构建不起作用

java - 在 AndroidTest 中编写外部存储

java - 在某些设备上录制音频时出现 Android IllegalStateException

Android - sqlite 数据库中事件的通知

linux - 在 Linux 下,有没有比 C 延迟更低的语言? (除了汇编程序)

linux - 从base64解码并执行命令