arm-eabi-gcc:尝试设置LiME时未找到命令

时间:2013-01-16 15:35:08

标签: android compilation

我不在乎。我觉得我已经做好了一切。我正在尝试使用LiME从android捕获内存映像。如果我这样做......

   $ cd $my_android_ndk_path/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/
   $ make ARCH=arm CROSS_COMPILE=arm-eabi- modules_prepare

它返回

    make: *** No rule to make target `modules_prepare'.  Stop.

如果我从我的内核源(我的.config所在的位置)输入相同的命令         $ make ARCH = arm CROSS_COMPILE = path / to / android_ndk / toolchains / arm-linux-androideabi-4.4.3 / prebuilt / linux-x86 / bin / arm-eabi- modules_prepare

它返回

    make: /path/to/android_ndk/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-eabi-gcc: Command not found
    CHK     include/linux/version.h
    make[1]: `include/asm-arm/mach-types.h' is up to date.
    CHK     include/linux/utsrelease.h
    SYMLINK include/asm -> include/asm-arm
    CC      kernel/bounds.s

我确定我的目录是正确的。有谁知道我可能做错了什么。我没有使用任何特定的工具为ndk。我只是将ndk和sdk分开解压缩并安装JDK。一切都应该有效,但事实并非如此。

2 个答案:

答案 0 :(得分:1)

你检查了你的arm-eabi-gcc(命令:file / arm-eabi-gcc)编译器和你的机器(32或64位)之间的兼容性吗? 如果你的arm-eabi-gcc与32位机器兼容,为了防止在64位机器中出现“make:arm-eabi-gcc:Command not found”之类的错误,你必须安装软件包“ia32-libs”(命令:sudo apt-get install ia32-libs)。

答案 1 :(得分:0)

modules_prepare是一个内核准备程序。其目的是确保存在足够的头文件,您可以随后根据该内核源代码树构建内核模块。你看,内核有一些自动生成的文件,并且至少不运行modules_prepare,就不可能进行内核模块编译。

为此,当您从内核树运行modules_prepare时,这是一个正确的操作。从交叉编译器运行它是没有意义的,因为它不了解你想要做什么。

我建议您通过将交叉编译器添加到PATH来使您的生活更轻松:

PATH=$PATH:$my_android_ndk_path/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/
cd <kernel directory>
make ARCH=arm CROSS_COMPILE=arm-eabi- modules_prepare

所以这说...... modules_prepare只是准备构建模块的第一步。如果您正在尝试构建内核模块(LiME?我不知道那是什么)那么您需要follow the steps for building a kernel module

编辑:

现在我知道你正在构建什么内核模块(lime-forensics),我可以看到它SVN sources。 Makefile期望您为本地计算机构建,而不是交叉编译。

更改以下内容:

default:
        $(MAKE) -C /lib/modules/$(KVER)/build M=$(PWD) modules

default:
        $(MAKE) -C <your Android kernel> ARCH=arm CROSS_COMPILE=arm-eabi- M=$(PWD) modules

这可能会让你更进一步。