[英]arm-eabi-gcc :command not found when trying to set up LiME
我不知道了。 我覺得我已經正確地做了所有事情。 我正在嘗試使用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。 一切都應該工作,但不能。
您是否檢查了arm-eabi-gcc(命令:文件/ 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)。
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?我不知道這是什么),
那么您將需要遵循構建內核模塊的步驟 。
編輯:
現在,我知道您要構建的內核模塊(石灰法證),我可以看到其SVN源 。 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
那可能會使您更進一步。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.