2013年12月31日 星期二

arm cross compile 常用指令備忘



製作 initramfs image

find . | cpio -H newc -o | gzip -9 > /boot/initrd.img
或是
find . | cpio -H newc -o > rootfs
解壓縮 initramfs image

gunzip -c /boot/initrd.img-2.6.24-19-generic | cpio -i

修改 initrd image

mount -t ext2 -o loop initrd.img temp/

編譯 arm 核心,arm-linux-gnueabi-請換成你用 cross_compiler

make ARCH=arm versatile_defconfigmake ARCH=arm menuconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- all

編譯完後,核心路徑在 arch/arm/boot


qemu-system-arm -M versatilepb -m 128M -kernel zImage -no-reboot


第一支程式

#include <stdio.h>
int main() {  printf("Hello World!\n");  while(1);}


編譯第一支程式
arm-linux-gnueabi-gcc -static    test.c   -o test 
製作 rootfs
echo test | cpio -o --format=newc > rootfs
執行第一支程式
qemu-system-arm -M versatilepb -m 128M -kernel zImage -initrd rootfs -append "root=/dev/ram rdinit=/test" -no-reboot
啟動核心後,核心會執行你的程式。

其他:如果你要測試編譯出來的程式,也可以直接用下面指令。
qemu-arm -L /usr/arm-linux-gnueabi/ a.out

參考資料

http://backreference.org/2010/07/04/modifying-initrdinitramfs-files/
http://balau82.wordpress.com/2010/03/22/compiling-linux-kernel-for-qemu-arm-emulator/

沒有留言:

張貼留言