make:***[out/host/linux-x86/obj/EXECUTABLES/obbtool_intermediates/Main.o]Error1

本文介绍如何在Ubuntu 12.04中解决因GCC版本过高导致的Android编译错误。通过安装指定版本的GCC和调整系统默认GCC版本设置,最终成功编译Android源码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在ubuntu12.04下编译android时,若出现如此错误,那是因为gcc版本太高。


通过gcc-v命令可以发现gcc库在/usr/lib/gcc/i686-linux-gnu目录下,该目录下有当前系统支持的各种版本gcc库 。在安装gcc4.4前该目录下是没有4.4目录的,安装gcc 4.4后该目录下就会多出4.4这个目录,且该4.4目录下有各种相应库文件。

ubuntu 32bit系统下安装gcc 4.4的最好方法是仅用以下两条命令,不需要其它命令,否则编译时可能会出错。

sudo apt-get install gcc-4.4

sudo apt-get install g++-4.4

 


装完后在/usr/bin目录下

$ ls -l gcc*

lrwxrwxrwx 1 root root      7 2011-10-29 09:11 gcc -> gcc-4.6

-rwxr-xr-x 1 root root 224544 2011-10-06 05:47 gcc-4.4

-rwxr-xr-x 1 root root 302104 2011-09-17 05:43 gcc-4.6

发现gcc 链接到gcc-4.6,  需要将它改为链接到gcc-4.4 :

sudo mv gcc gcc.bak

sudo ln -s gcc-4.4 gcc

 

 

同理

ls -l g++*

lrwxrwxrwx 1 root root      7 2011-08-14 15:17 g++ -> g++-4.6

-rwxr-xr-x 1 root root 228640 2011-10-06 05:45 g++-4.4

-rwxr-xr-x 1 root root 306200 2011-09-17 05:39 g++-4.6

需要将g++链接改为g++-4.4:

/usr/bin$ sudo mv g++ g++.bak

/usr/bin$sudo ln -s g++-4.4 g++



再查看gcc和g++版本号:gcc -vg++ -v均显示gcc version 4.4.6 ,说明gcc 4.4安装成功


-------------------------------------------------------------------------------------------------------------------

make: *** [out/host/linux-x86/obj/SHARED_LIBRARIES/libdvm_intermediates/native/dalvik_system_Zygote.o] Error 1


在dalvik/vm/native/dalvik_system_Zygote.cpp中间增加一个头文件定义#include <sys/resource.h>

#include "Dalvik.h"


#include "native/InternalNativePriv.h"


#include <sys/resource.h>


本篇文章来源于 Linux公社网站(www.linuxidc.com)  原文链接:http://www.linuxidc.com/Linux/2014-03/97761p2.htm

http://bbs.youkuaiyun.com/topics/390578165

<think>嗯,用户遇到了在Ubuntu18上编译AOSP9时出现aapt编译失败的特定错误,需要针对性解决方案。从提交的引用内容看,用户已经收集了相关线索:引用1提到64位环境下缺少32位兼容库的问题;引用2和引用3分别涉及X11头文件缺失和flex工具兼容性问题;引用4则暗示64位环境编译32位目标时的库文件链接问题。结合这些线索和用户当前具体的失败点(out/host/linux-x86/obj/EXECUTABLES/aapt_intermediates/Main.o),问题可能集中在三个方面:首先是64位环境对32位编译的支持不足,其次是编译工具链的依赖缺失,最后可能是环境变量设置不当。尤其值得注意的是aapt工具在编译过程中会调用很多本地库,而X11开发库(libx11-dev)的缺失在引用2中已被证实会导致类似错误。用户的上个问题询问的是整个AOSP9编译流程,这次则聚焦在具体模块编译失败,说明用户已进入实际编译阶段且卡在工具链构建环节。考虑到aapt是资源打包的关键工具,这个问题必须优先解决。需要提供阶梯式解决方案:先检查基础依赖,再验证工具链,最后处理可能的符号链接问题。特别要注意引用3提到的flex工具崩溃案例,虽然错误信息不同,但同样是工具链问题。用户环境可能存在多种编译工具版本冲突,因此需要确认flex和bison的版本兼容性。此外,引用4暗示的32位库链接问题非常关键,因为AOSP9的host工具仍包含32位组件,解决方案中必须包含多架构支持检查和32位库安装验证。对于这个具体错误,最直接的突破口应该是:1)确保所有64位+32位混合编译依赖已安装(如ia32-libs替代方案)2)检查SDL/X11头文件是否存在3)验证libstdc++的32位符号链接分步验证的方式能帮助用户精准定位缺失环节。</think> 针对Ubuntu 18编译AOSP 9时`FAILED: out/host/linux-x86/obj/EXECUTABLES/aapt_intermediates/Main.o`错误,请按以下步骤解决: --- ### **解决方案** #### **1. 安装32位兼容库(关键步骤)** ```bash sudo apt-get update # 安装多架构支持 sudo dpkg --add-architecture i386 # 安装核心32位库 sudo apt-get install libc6:i386 libstdc++6:i386 zlib1g:i386 # 安装开发依赖项 sudo apt-get install gcc-multilib g++-multilib lib32z1-dev libx11-dev:i386 ``` > **说明**:AOSP工具链含32位组件,需32位运行库支持[^1][^4] #### **2. 验证库文件链接** ```bash # 检查32位库链接(重点确认libstdc++) ls -l /usr/lib/i386-linux-gnu/libstdc++* # 若缺失链接,手动创建(需root权限) sudo ln -s /usr/lib/i386-linux-gnu/libstdc++.so.6 /usr/lib/i386-linux-gnu/libstdc++.so ``` #### **3. 修复X11头文件缺失** ```bash # 安装X11开发包(解决Xlib.h报错[^2]) sudo apt-get install libx11-dev libxext-dev libxtst-dev ``` #### **4. 清理并重试编译** ```bash # 清除错误编译缓存 make clean # 单线程重试编译(定位问题) make -j1 aapt ``` > 成功后恢复并行编译:`make -j$(nproc)` --- ### **进阶排查** 若仍失败,检查以下位置: 1. **编译日志细节** ```bash # 查看完整报错信息 cat out/error.log | grep -C 10 "Main.o" ``` 2. **Python环境验证** ```bash # 确认使用Python2(AOSP9强制要求) export PYTHON_VERSION=python2.7 python --version ``` 3. **内存限制调整** ```bash # 防止OOM崩溃(特别是<32GB内存设备) export JACK_SERVER_VM_ARGUMENTS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4096m" ./prebuilts/sdk/tools/jack-admin kill-server ./prebuilts/sdk/tools/jack-admin start-server ``` --- ### **预防措施** ```diff # 完整依赖清单(新增32位相关包) sudo apt install libc6-dev-i386 lib32stdc++6 lib32z1-dev \ + libx11-dev:i386 lib32ncurses5-dev gcc-multilib g++-multilib ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值