`

Andriod源码编译时的GCC版本问题解决 .

阅读更多
编译MTK6516的Android代码时,需要用到Gcc_4.1.2(MTK指定了这个版本的Gcc)。
而我的ubuntu10.04自带版本为Gcc_4.4.3。

处理步骤如下:
1. 首先下载所需的文件,我下载deb包,地址http://archive.ubuntu.com/ubuntu/pool/universe/g/gcc-4.1/

2. Gcc deb包存在依赖关系,安装顺序如下

32位安装GCC4.1.2
sudo dpkg -i gcc-4.1-base_4.1.2-27ubuntu1_i386.deb
sudo dpkg -i cpp-4.1_4.1.2-27ubuntu1_i386.deb
sudo dpkg -i cpp-4.1-doc_4.1.2-27ubuntu1_all.deb
sudo dpkg -i gcc-4.1_4.1.2-27ubuntu1_i386.deb
sudo dpkg -i gcc-4.1-multilib_4.1.2-27ubuntu1_i386.deb
sudo dpkg -i gcc-4.1-doc_4.1.2-27ubuntu1_all.deb
/*两个deb要一起输入,他们相互依赖,让系统自己处理*/
sudo dpkg -i g++-4.1_4.1.2-27ubuntu1_i386.deb libstdc++6-4.1-dev_4.1.2-27ubuntu1_i386.deb
sudo dpkg -i g++-4.1-multilib_4.1.2-27ubuntu1_i386.deb
64位安装
sudo dpkg -i gcc-4.1-base_4.1.2-27ubuntu1_amd64.deb
sudo dpkg -i cpp-4.1_4.1.2-27ubuntu1_amd64.deb
sudo dpkg -i cpp-4.1-doc_4.1.2-27ubuntu1_all.deb
sudo dpkg -i gcc-4.1_4.1.2-27ubuntu1_amd64.deb
sudo dpkg -i gcc-4.1-multilib_4.1.2-27ubuntu1_amd64.deb
sudo dpkg -i gcc-4.1-doc_4.1.2-27ubuntu1_all.deb
/*两个deb要一起输入,他们相互依赖,让系统自己处理*/
sudo dpkg -i g++-4.1_4.1.2-27ubuntu1_amd64.deb libstdc++6-4.1-dev_4.1.2-27ubuntu1_amd64.deb
sudo dpkg -i g++-4.1-multilib_4.1.2-27ubuntu1_amd64.deb
3. 这时,系统里面会有2个版本的GCC,缺省的还是原来默认的GCC 4.4.3,我们可以更改系统的默认配置。
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.4 40
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.1 30
设置默认编译器,如下
sudo update-alternatives --config gcc
有 2 个选项可用于替换项 gcc (提供 /usr/bin/gcc)。

  选择       路径            优先级  状态
------------------------------------------------------------
* 0            /usr/bin/gcc-4.4   40        自动模式
  1            /usr/bin/gcc-4.1   30        手动模式
  2            /usr/bin/gcc-4.4   40        手动模式

选择“1”。
4. 此时在命令行输入
1.gcc --version 

gcc (GCC) 4.1.3 20080704 (prerelease) (Ubuntu 4.1.2-27ubuntu1)
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

5.首先运行
./makeMtk --help
可以看到包含的project_name

然后运行
./makeMtk project_name new
此时会检查本地环境,不符合编译条件的软件版本会被列出在checkenv.log文件中。
打开这个文件,可以看到:
Suggested Linux OS and Tool Chain to install
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ Build System Requirment:
+ Linux OS     : RedHat Enterprise Linux Server 5.4 or Ubuntu 9.10/Ubuntu 10.04
+ arm-eabi-gcc : Version 4.4.0
+       Perl         : Version 5.8.X
+ Python       : Version 2.5.X
+ Gcc          : Version 4.1.2
+ JDK          : Version 1.5 (1.6 is Not Supported)
+ Wine         : Version 1.1 or above
+ Make         : GNU Make 3.81 or above
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

在此案中,我没有安装arm-eabi-gcc,Wine;另外GCC版本过高(4.2.2),JDK版本也过高。
这两点我分别写了两个文章
《Andriod源码编译时的GCC版本问题解决》,《Andriod源码编译时的JDK版本问题解决》。

这里只记录arm-eabi-gcc,Wine的问题。

6. 安装Wine
sudo apt-get install wine1.2

7. 安装arm-eabi-gcc
在项目原文件根目录下输入:
find -name arm-eabi-gcc
显示:
./prebuilt/darwin-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-gcc
./prebuilt/darwin-x86/toolchain/arm-eabi-4.3.1/bin/arm-eabi-gcc
./prebuilt/darwin-x86/toolchain/arm-eabi-4.2.1/bin/arm-eabi-gcc
./prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-gcc
./prebuilt/linux-x86/toolchain/arm-eabi-4.3.1/bin/arm-eabi-gcc
./prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/bin/arm-eabi-gcc
根据checkenv.log中的suggestion,选用arm-eabi-4.4.0,即把这个bin目录的绝对路径加入到环境变量的PATH中。
export PATH="$PATH:/source_files_path/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/"

8. 编译
当一切就绪后,就可以编译代码了。
我采用的开发模式是编译出ramdisk.img,system.img,userdata.img并拷到SDK中,运行模拟器来查看效果。
编译这几个img的命令是

./mk emulator new
分享到:
评论

相关推荐

    Android交叉编译环境&Iperf3;.0源码编译

    本文将详细阐述如何在Linux环境下搭建Android交叉编译环境,并针对iperf3.0源码进行编译,以生成适用于Android系统的可执行文件。 首先,交叉编译是指在一个平台上构建另一个平台上的软件。对于Android,我们通常在...

    在android上的gcc

    在Android平台上,GCC(GNU Compiler Collection)是一种关键的开发工具,它允许开发者使用C、C++等编程语言来编写和编译应用程序。GCC是开源的,由GNU项目维护,广泛应用于各种操作系统,包括Linux和Android。本文...

    Ubuntu系统下Android源码编译.pdf

    总之,Ubuntu系统下的Android源码编译涉及多个环节,包括环境准备、源码获取、编译配置和问题解决。理解并掌握这些步骤,对于Android开发者来说,不仅能够提升开发效率,也更有利于深入理解Android系统的内部工作...

    qt-eclipse-integration-linux.x86-gcc3.3-1.4.0.tar.gz

    标题中的"qt-eclipse-integration-linux.x86-gcc3.3-1.4.0.tar.gz"是一个软件包的名称,它表明了这个压缩文件是针对Linux平台上的x86架构(32位),并且是与GCC 3.3版本兼容的Qt Eclipse集成插件的1.4.0版本。...

    Android源码的编译-教程[参考].pdf

    Android源码编译教程 Android源码编译是一个复杂的过程,需要具备一定的编程基础和Linux操作系统的使用经验。本文档旨在提供一个详细的教程,指导读者从零开始编译Android源码。 环境准备 在开始编译Android源码...

    Android4.1.2下载和编译过程中问题总结1.doc

    在编译 Android 源码时,可能会出现 JDK 版本问题,例如 You are attempting to build with the incorrect version of java.Your version is: java version "1.6.0_22".The correct version is: Java SE 1.6。...

    Android源码编译流程.pdf

    《Android源码编译流程详解》 Android系统作为全球最广泛使用的移动操作系统,其源码编译流程对于开发者而言至关重要。本文将详细解析Android源码的编译过程,包括环境搭建、编译命令以及相关工具的使用,帮助读者...

    Android源码编译流程借鉴.pdf

    《Android源码编译流程详解》 Android源码编译是开发者深入了解系统内核、定制化开发或进行系统级调试的重要步骤。本文将详细介绍Android源码的编译流程,包括必要的环境配置、编译指令以及相关工具的使用。 首先...

    android源码_SDK_ADT_编译.doc

    在Android开发过程中,深入理解Android源码和SDK的编译过程是至关重要的,这不仅可以帮助开发者更好地调试系统级问题,还能提升对Android平台的理解。以下是一份关于在Linux环境下编译Android源码和SDK的详细步骤及...

    修改变量后的FFmpeg源码(版本:4.1.3.tar.bz2)可直接在Ubuntu下使用NDK 17C版本进行编译Android.So库文件

    在Android平台上,为了实现对音频和视频的处理,通常需要将FFmpeg源码编译为Android的共享库(.so文件)。在本案例中,提供的FFmpeg源码是经过特定修改的4.1.3版本,修复了某些变量错误,以便适应在Ubuntu操作系统下...

    Ubuntu下Android源码修改、编译及运行、launcher定制.docx

    Ubuntu 下 Android 源码修改、编译及运行、launcher 定制 ...本文档提供了在 Ubuntu 系统下进行 Android 源码修改、编译和运行的详细步骤,旨在帮助开发者快速掌握 Android 源码编译和运行的技术。

    android源码的编译.pdf

    通过对上述步骤的学习与实践,我们可以看到Android源码编译是一项复杂但又十分有意义的工作。它不仅能够帮助开发者深入了解Android系统的内部机制,还能够在一定程度上提高系统的性能和稳定性。希望本文档能够为那些...

    Android应用源码之系统源码获取及编译.zip

    2. **环境配置**:编译Android源码需要特定的开发环境,包括Linux发行版(如Ubuntu)、Java JDK、NDK(Native Development Kit)以及一些依赖的构建工具,例如GCC或者Clang编译器。确保所有必要的软件和库都已安装并...

    Ubuntu下编译Android源码并运行Emulator2.pdf

    Ubuntu 下编译 Android ...* 编译 Android 源码时,需要耐心等待,否则可能会导致编译失败。 编译 Android 源码并运行 Emulator 2 需要细心和耐心,只有经过正确的步骤,才能成功编译 Android 源码并运行 Emulator 2。

    Android platform 源码的下载、编译.doc

    Subversion主要用于版本控制,虽然在Android源码下载过程中未直接使用,但在其他场合可能会用到。 总结来说,要获取和编译Android平台源码,你需要准备正确的开发环境,包括安装git、repo、JDK、gperf和交叉编译...

    Android版gcc源码(支持arm、aarch64、mips、mips64、i586、x86_64)

    基于Google官方gcc4.9.x修改的源码, 支持直接通过交叉编译器编译出在Android上跑的gcc, gcc版本为7.2.0 建议静态编译

    PCL for Android 编译过程遇到的问题及办法

    如果在配置过程中遇到关于Eigen的问题,可以通过下载Eigen的源码或者安装预编译版本来解决。配置时指定Eigen的目录即可。 - **BoostFLANN**:BoostFLANN需要专门针对Android平台进行编译。这意味着你需要从头开始...

Global site tag (gtag.js) - Google Analytics