前提:
手机有root权限
一、下载gcc压缩包,电脑里解压:
下载链接: https://pan.baidu.com/s/1lU9pa0ZiSJylNOfk7TT71Q 提取码: hf27
里面有这些文件:
二、用adb将gcc文件都传到手机
手机存放目录:/data/gcc(可自定)
c:\tmp\fastboot>adb push C:\tmp\gcc_android /data/gcc/
C:\tmp\gcc_android\: 1537 files pushed. 3.5 MB/s (41001656 bytes in 11.261s)
root@bbk82_wet_jb5:/data # ls -l ./gcc
drwxrwxr-x root root 2022-03-14 21:52 gcc_android
root@bbk82_wet_jb5:/data # mv ./gcc/gcc_android/* ./gcc
root@bbk82_wet_jb5:/data # ls -l ./gcc
drwxrwxr-x root root 2022-03-14 21:52 arm-linux-androideabi
drwxrwxr-x root root 2022-03-14 21:52 bin
drwxrwxr-x root root 2022-03-14 21:54 gcc_android
drwxrwxr-x root root 2022-03-14 21:52 lib
drwxrwxr-x root root 2022-03-14 21:52 libexec
-rw-rw-rw- root root 8 2013-03-23 20:57 plugin_version
drwxrwxr-x root root 2022-03-14 21:52 terminfo
drwxrwxr-x root root 2022-03-14 21:52 tmpdir
三、修改文件权限(主要加可执行权限)
root@bbk82_wet_jb5:/data/gcc # chmod 755 ./bin/*
root@bbk82_wet_jb5:/data/gcc # chmod 755 ./arm-linux-androideabi/bin/*
root@bbk82_wet_jb5:/data/gcc # chmod 755 ./libexec/gcc/arm-linux-androideabi/4.7.1/*
四、配置环境变量
root@bbk82_wet_jb5:/data/gcc # export GCCHOME=/data/gcc
root@bbk82_wet_jb5:/data/gcc # export GCCPATH=$GCCHOME/bin:$GCCHOME/arm-linux-androideabi/bin:$GCCHOME/libexec
root@bbk82_wet_jb5:/data/gcc # export PATH=$PATH:$GCCHOME:$GCCPATH
五、传送并编译解压工具unyaffs(源码)
gcc -c unyaffs.c 编译
gcc -o unyaffs unyaffs.o 链接
C:\tmp\fastboot>adb push C:\tmp\unyaffs-master\unyaffs.c /data/jwj/
C:\tmp\unyaffs-master\unyaffs.c: 1 file pushed. 0.0 MB/s (2827 bytes in 0.118s)
C:\tmp\fastboot>adb push C:\tmp\unyaffs-master\unyaffs.h /data/jwj/
C:\tmp\unyaffs-master\unyaffs.h: 1 file pushed. 0.0 MB/s (3729 bytes in 0.082s)
root@bbk82_wet_jb5:/data/jwj # gcc -c unyaffs.c
root@bbk82_wet_jb5:/data/jwj # ls -l
-rw-rw-rw- root root 2827 2008-12-29 18:06 unyaffs.c
-rw-rw-rw- root root 3729 2008-12-29 18:06 unyaffs.h
-rw-r--r-- root root 3536 2022-03-15 11:28 unyaffs.o
root@bbk82_wet_jb5:/data/jwj # gcc -o unyaffs unyaffs.o
/data/gcc/bin/../lib/gcc/arm-linux-androideabi/4.7.1/../../../../arm-linux-androideabi/bin/ld: warning: unyaffs.o uses variable-size enums yet the output is to use 32-bit enums; use of enum values across objects may fail
运行unyaffs:
出现问题:[1] + Stopped (signal) unyaffs /sdcard/data/system.img
Segmentation fault
root@bbk82_wet_jb5:/data/jwj # unyaffs /sdcard/data/system.img
[1] + Stopped (signal) unyaffs /sdcard/data/system.img
root@bbk82_wet_jb5:/data/jwj # ls -l /var/log/message
/var/log/message: No such file or directory
[1] + Segmentation fault unyaffs /sdcard/data/system.img
原因:此system.img是ext4文件系统格式的,不能用unyaffs来解包
Administrator@jwj /usr/gccwin/bin
$ file c:/tmp/mstar-bin-tool-master/pack/system.img
c:/tmp/mstar-bin-tool-master/pack/system.img: Linux rev 1.0 ext4 filesystem data, UUID=57f8f4bc-abf4-655f-bf67-946fc0f9f25b (extents) (large files)
(yaffs2文件系统应是:VMS Alpha executable)