zoukankan      html  css  js  c++  java
  • 在Android上使用gcc编译C/C++源程序

    本文和gcc编译器在我的百度网盘中有下载:http://yun.baidu.com/share/link?shareid=3369826431&uk=3138089586

    本文中的脚本难免有错,请以实际文件夹名为主。

    前几天在网上看到了一篇关于Android上利用终端来使用gcc编译C/C++源程序的文章,我感到无比兴奋,所以立刻将我自己的安装过程记下来。那个后记也很有用的。

    gcc编译源代码需要创建临时文件,而gcc又只能安装在手机内存中使用(因为需要755权限),因此必须使用root来调用它。

    1、下载gcc plugin for C4Droid,解压其中的gcc文件夹出来,里面有基本的编译工具。如果要使用Qt,则将qt文件夹中的gcc和上述gcc文件夹合并即可。

    2、将gcc文件夹复制到/system或/data文件夹中,但不能是/dev或/cache中。如果为了美观,也可以将gcc文件夹的权限改为755。假设安装到了/system中。

    3、在gcc根目录下创建一个用于修改文件权限的脚本chgmod.sh,内容:

    echo 1..
    chmod 755 ./bin/*
    chmod 755 ./arm-linux-androideabi/bin/*
    chmod 755 ./libexec/gcc/arm-linux-androideabi/4.7.1/*
    echo 2..

    4、再创建一个用于设置gcc环境变量的脚本setgcc.sh,内容:

    echo 1..
    export GCCHOME=/system/gcc
    export GCCPATH=$GCCHOME/bin:$GCCHOME/arm-linux-androideabi/bin:$GCCHOME/libexec
    export PATH=$PATH:$GCCHOME:$GCCPATH
    echo 2..
    su
    echo 3..

    5、修改以上文件属性为755。

    6、尝试先写一个源程序test.c,内容:

    #include <stdio.h>
    
    int
    main(void) {   printf("Hello world! ");   return 0;
    }

    7、安装Android上的终端程序,我用的是BTEP。

    8、在终端中输入命令(顺序不可变),获取root权限:

    su

    切换目录:

    cd /system/gcc

    执行脚本,修改权限(只需运行一次,以后可跳过):

    ./chgmod.sh

    设置gcc环境变量:

    ./setgcc.sh

    这个脚本执行后将会再次进入su,为的是使export设置的变量继续生效。退出后会有提示。

    如果终端没有报错,则继续,否则检查脚本内容里的目录是否正确。

    9、输入:

    gcc -Wall -o test test.c

    如果终端报错,回到本文开头重新看过,看看是本文错了还是自己写错脚本了;

    如果gcc报错,不关我的事,戴上眼镜看看源程序是不是错了。

    待gcc输出一大包字符后,完成编译。

    10、输入:

    ./test

    输出“Hello world!”,噢耶!完成!

    以后要使用gcc就从步骤8开始了!


    后记:

    写了一大包,不就是写如何设置环境变量和保持变量效果的问题嘛!有一个更好的方法,就是直接修改手机根目录下的init.rc文件:

    1、用RE的编辑器编辑init.rc,在此之前最好备份。

    2、找到有一大堆export的那部分,在那部分的最后添加:

    export GCCHOME=/system/gcc
    export GCCPATH=$GCCHOME/bin:$GCCHOME/arm-linux-androideabi/bin:$GCCHOME/libexec export PATH=$PATH:$GCCHOME:$GCCPATH

    3、保存退出,如果出现了什么乱子就直接将备份的文件还原为init.rc。

    方法还没试过(懒:P),但理论上可以,因为sh和su下用export输出的环境变量是一样的。试试吧!但是手机重启之后要检查一下init.rc是否被还原了……

    第一次发文章,不会排版,凑合着看吧……

  • 相关阅读:
    Mayan游戏 (codevs 1136)题解
    虫食算 (codevs 1064)题解
    靶形数独 (codevs 1174)题解
    黑白棋游戏 (codevs 2743)题解
    神经网络 (codevs 1088) 题解
    The Rotation Game (POJ 2286) 题解
    倒水问题 (codevs 1226) 题解
    银河英雄传说 (codevs 1540) 题解
    生日蛋糕 (codevs 1710) 题解
    第一章 1.11 高阶函数
  • 原文地址:https://www.cnblogs.com/woobhurk/p/3404427.html
Copyright © 2011-2022 走看看