• 在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是否被还原了……

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

  • 相关阅读:
    mysql总结
    spirngmvc整合mybatis实现CRUD
    java lesson09总结
    Java lesson08 Homework
    java Lesson08总结
    【DFS】bzoj2435 [Noi2011]道路修建
    【BFS】bzoj2252 [2010Beijing wc]矩阵距离
    【BFS】bzoj1054 [HAOI2008]移动玩具
    【搜索】bzoj3109 [cqoi2013]新数独
    【搜索】【约数个数定理】[HAOI2007]反素数ant
  • 原文地址:https://www.cnblogs.com/woobhurk/p/3404427.html
Copyright © 2020-2023  润新知