x86_64用户态模拟arm程序(helloworld)

原创 2015年07月07日 13:27:57
用户态模拟arm 运行程序 - "hello world"

编译一个运行在arm 上的helloworld.
----------------------------------------
甲: 代码
----------------------------------------
$cat hello.c
#include <stdio.h>
void main()
{
    printf("---------- hello qemu ------------\n");
//    return 0;
    while(1);
}

注意结尾是while(1); 而不是return 0;
   这里模拟一个永不退出的主进程

----------------------------------------
乙: 编译
----------------------------------------
$cat Makefile
CC=arm-none-linux-gnueabi-gcc
all: initramfs

hello:
    $(CC) -o hello hello.c -static
initramfs: hello

    echo hello |cpio -o --format=newc > initramfs

# 说明: hello 是文件名称, -o 是创建, initramfs 是归档名称


    
clean:
    rm hello initramfs
用来交叉编译出arm 执行文件和打包文件
打包文件是为系统起动ramfs 镜像, 研究系统时使用

----------------------------------------
丙: 运行
----------------------------------------
$ qemu-arm hello
---------- hello qemu -----------
^C
 qemu-arm 是用户态arm模拟运行程序

说明:
如果编译时不加-static 选项,则运行时需要指明运行库搜索路径。
arm-none-linux-gnueabi-gcc -o hello hello.c
这个hello 需要动态链接库
$ qemu-arm hello
/lib/ld-linux.so.3: No such file or directory

查询所需要的动态库:
arm-none-linux-gnueabi-readelf -a hello |grep lib
      [Requesting program interpreter: /lib/ld-linux.so.3]

对于我的环境,指明库路径:
$ qemu-arm  -L /home/hjj/CodeBench/arm-2014.05/arm-none-linux-gnueabi/libc hello
---------- hello qemu ------------
^C

版权声明:本文为博主原创文章,未经博主允许不得转载。

内核态和用户态区别

内核态和用户态区别 当一个任务(进程)执行系统调用而陷入内核代码中执行时,我们就称进程处于内核运行态(或简称为内核态)。此时处理器处于特权级最高的(0级)内核代码中执行。当进程处于内核态...

IOS:armv7,armv7s,arm64,i386,x86

一、概要 平时项目开发中,可能使用第三方提供的静态库.a,如果.a提供方技术不成熟,使用的时候就会出现问题,例如: 在真机上编译报错:No architectures to compile for...

Android 中arm64-v8a、armeabi-v7a、armeabi、x86简介~

LZ是一名96年Android小生,从14年9月培训出来到现在,差不多俩年多的时间,由于一些原因,没能好好把技术提升一下,实乃不该啊。 了解起因昨天师傅问,你知道这俩个是什么么?有什么作用么?(如下图...

android libs文件夹下armeabi armeabi-v7a x86 arm64-v8a

armeabi和armeabi-v7a      在我们androidAPK的根目录有一个 libs文件夹,此文件夹下包含了armeabi和armeabi-v7a两个文件夹,我们的c代码...

iOS关于armv7,armv7s,arm64,i386,x86_64等问题

iOS测试分为模拟器测试和真机测试,处理器分为32位处理器,和64位处理器, 模拟器32位处理器测试需要i386架构, 模拟器64位处理器测试需要x86_64架构, 真机32位处理器需要armv7,或...

《Windows用户态程序高效排错》

  • 2007年11月09日 11:24
  • 585KB
  • 下载

《Windows用户态程序高效排错》

  • 2008年08月25日 13:30
  • 585KB
  • 下载

Linux 5.7 x86-64bit VNC 配置 解决登陆VNC灰色界面 配置多个用户登录

配置环境: Linux 5.7 x86-64bit 问题描述: 1:解决VNC登录 2:配置 解决登陆VNC灰色界面 3:配置 多用户登录方法 安装方法: 1、查询vnc软件 [root@orcl...

Windows用户态程序高效排错

  • 2008年07月30日 12:54
  • 722KB
  • 下载

Windows.用户态程序高效排错 熊力.zip

  • 2011年07月15日 14:35
  • 19.97MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:x86_64用户态模拟arm程序(helloworld)
举报原因:
原因补充:

(最多只允许输入30个字)