`

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版gcc源码(支持arm、aarch64、mips、mips64、i586、x86_64)

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

    在android上的gcc

    下载到指定路径,赋予权限,配合terminal使用

    ARM Cortex-A8和Android 4.x联动报警系统

    第二部分内容,先简单讲解Android系统移植相关原理,然后一步步手把手教大家如何进行Linux内核移植、Android源码编译、以及Android到Cortex A8开发板的移植;第三部分内容,先教大家如何搭建裸机开发环境,然后带领...

    【PaddlePaddle】Java demo测试

    参考博客【PaddlePaddle】源码编译Paddle-Lite android库的过程。 二、准备demo Demo在Paddle-Lite/build.lite.android.armv8.gcc/inference_lite_lib.android.armv8/demo/java/android/下。 这里有一个脚本prepare_...

    Android_WebRtc编译, 配置, 编译出错

    1.webrtc 配置环境 和 安装软件 2. 获取源码 及 编译

    基于ARM Cortex-A8和Android 4.x的联动报警系统 (Android 、A8、Linux、驱动、NDK)

    第二部分内容,先简单讲解Android系统移植相关原理,然后一步步手把手教大家如何进行Linux内核移植、Android源码编译、以及Android到Cortex A8开发板的移植;第三部分内容,先教大家如何搭建裸机开发环境,然后带领...

    ARM Cortex-A8和Android 4.x的联动报警

    第二部分内容,先简单讲解Android系统移植相关原理,然后一步步手把手教大家如何进行Linux内核移植、Android源码编译、以及Android到Cortex A8开发板的移植;第三部分内容,先教大家如何搭建裸机开发环境,然后带领...

    Ubuntu14.04以及新版本_编译多平台MTK代码

    如何配置Ubuntu编译多平台Android源码,主要配置的地方openjdk、gcc、g++

    android studio集成ijkplayer的示例代码

    关于编译,我是在Ubuntu上编译后拷贝到win10中的,ijkplayer源码需要gcc编译,windows各种不好用,如果使用cynwin还不如在ubuntu下编译。 编译的过程是下载sdk,ndk。设置环境变量后按照github上的说明编译即可. ...

    【PaddlePaddle】测试Paddle-Lite mobile_light C++示例程序

    可根据博客【PaddlePaddle】源码编译Paddle-Lite android库的过程或者其他本地源码编译的方法编译好android平台的库文件。 编译好的库文件位于Paddle-Lite/build.lite/android.armv8.gcc/inference_lite_lib.android...

    wsq压缩编码,开源工程nbis_v4_2_0

    交叉编译nbis_v4_2_0所遇到的问题及编译通过过程(交叉编译运行于Android手机平台 交叉编译工具链ndk包含的工具链) 1、编译前首先设置好环境变量 export SYSROOT=$NDK/platforms/android-14/arch-arm export CC=...

    Exynos4412裸机开发参考资料和必备资源

    交叉编译工具:arm-linux-gcc-4.5.1-v6-vfp-20120301.tgz Uboot源码和SD卡烧写工具:uboot_tiny4412-20130729.tgz Exynos4412芯片手册:Exynos4412_Datasheet.pdf Exynos4412芯片启动流程:Exynos4412_iROM.pdf 核心...

    ffmpeg X 2012-1-18

    可以通过其他交叉编译工具,在其他系统下编译,但是缺少了原系统编译器一些优秀的特性,而且在游戏环境下及其不稳定,ffmpeg X的目的就是在源码级别解决各种操作系统和编译器的编译运行问题。 由于工作量巨大,希望...

    mini2440国嵌视频教程+课件+工具+软件+镜像+教程源码下载地址

    -国嵌应用班-1-1(GCC程序编译).avi -国嵌应用班-1-2(GDB程序调试).avi -国嵌应用班-1-3(makefile工程管理).avi -国嵌应用班-1-4(必修实验).avi -第2天(文件时间编程) -国嵌应用班-2-1(系统调用方式访问...

    使用root权限运行自己所编译程序的解决方法

    虽然编译后能运行,但由于使用了原始套接字,必须root权限运行,这与和Linux下真实的ping有差别:后者是不需要输入sudo或者切换到#才能运行的。linux中的ping源码没有找到,但是看到oschina上有一例自制的ping源码...

    word源码java-DeviceInternet:设备互联网

    word源码java #目标 DeviceConnect是手机控制ARM板子上的外设的最简单实例,目标是让使用者能更方便的扩张。...device目录,ARM工控板的程序源码,C语言程序,gcc交叉编译器编译后在ARM板子上运行。 ios目录,iPhone

    java8stream源码-appyoumake_compiler_service:MLAB编译器api

    14.04上使用Android编译的编译器服务安装说明: Div工具 sudo apt-get install git 可选工具: sudo apt-get install emacs sudo apt-get install openssh-server Vmware 工具(可选) sudo apt-get install gcc ...

    java版飞机大战源码-Cocos2d-xData:Cocos2d-x学习资料整理

    java版飞机大战源码 Cocos2d-x 阶段总结 一、背景 主要用来记录最近对于Cocos2d-x的了解情况,由于接下来会暂停这方面的学习而去完成其他任务,所以以防再次学习时没有线索,就将近几日的学习情况记录下来,方便之后...

    C/C++从零开始的cmake教程

    如果你有过在linux系统上源码安装某款软件的经历,那么肯定对这三部曲一点都不会陌生——配置(configure)、编译(make)、安装(make install)。几乎每次都是机器人般的操作,这背后其实是make(准确地说应该是GNU Make...

    java安卓源码特效-NFSIISE:NeedForSpeed:trade_mark:IISE-具有3D加速和TCP协议的跨平台包装器!

    java安卓安卓源码特效NFSIISE 具有 3D 加速和 TCP 协议的 Need For Speed:trade_mark: II SE 游戏的跨平台包装器! GIT 克隆: 不要忘记更新子模块: $ git submodule init $ git submodule update OpenGL 默认情况...

Global site tag (gtag.js) - Google Analytics