[Android] 单独编译生成boot.img时mkbootfs: No such file or directory解决方法

来源:互联网 发布:淘宝主图 2017 编辑:程序博客网 时间:2024/05/24 01:53

在一台没有安装Android源码编译环境的64位 Ubuntu14.04.5虚拟机上尝试单独编译Android用的Linux Kernel。并从编译好Android源码的机器上将out文件夹下的mkbootfs、minigzip、mkbootimg二进制程序copy了过来,用于生成boot.img

用copy过来的arm-eabi-4.6编译Kernel正常,但是编译后生成ramdisk.img的那一步,脚本执行总提示
tools/mkbootfs: No such file or directory
tools/minigzip: No such file or directory

确认了mkbootfs和minigzip文件的权限等没发现问题,只能想到是某些安装包没有安导致与原有的开发环境不一样。

试验后用下面命令安装g++-multilib和gcc-multilib后就正常了。

sudo apt-get install g++-multilib gcc-multilib

果然是由于mkbootfs是用32位的gcc/g++编译生成的,所以在64位系统上执行就需要安装g++-multilib或者gcc-multilib,两个只安装其中一个可能也可行,不过以后可能还有其他需要,就索性都安上吧。

又用readelf确认了一下mkbootfs文件的ELF Header证实了想法。

ELF Header:  Magic:   7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00   Class:                             ELF32  Data:                              2's complement, little endian  Version:                           1 (current)  OS/ABI:                            UNIX - System V  ABI Version:                       0  Type:                              EXEC (Executable file)  Machine:                           Intel 80386  Version:                           0x1  Entry point address:               0x8048c28  Start of program headers:          52 (bytes into file)  Start of section headers:          23604 (bytes into file)  Flags:                             0x0  Size of this header:               52 (bytes)  Size of program headers:           32 (bytes)  Number of program headers:         8  Size of section headers:           40 (bytes)  Number of section headers:         39  Section header string table index: 36
阅读全文
0 0
原创粉丝点击