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

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

相关文章推荐

arm linux嵌入式经典回答

很多新手刚开始学习ARM的时候都会遇到下面类似的问题,由于很多基本原理都不会,所以很容易被表面问题迷惑,相信看完下述问答的新手一定会对ARM有一个非常清晰的印象。 1、请问qt-x11、qt-emb...

吐血简述在arm-linux上编译helloworld时候的抓狂经历

想在我的fl2440上运行一个helloworld,在三、五个月前,我曾经编写过一个helloworld,跑在开发板上,当时编译和运行都很顺利,所以就没有把相关的操作过程记录下来。在随后的几个月里,一...

arm系统启动后运行 helloworld ("hello world" 被封装为ramdisk)

---------------------------------------- arm系统启动后运行 helloworld -------------------------------------...

吐血简述在arm-linux上编译helloworld时候的抓狂经历

转自:http://blog.csdn.net/samantha_sun/article/details/6428285 想在我的fl2440上运行一个helloworld,在三、五个月前,...

ARM与x86之2--Atom的前生今世

http://blog.sina.com.cn/s/blog_6472c4cc0100kq8b.html 世间本没有PC处理器和嵌入式处理器。这两种处理器在同一天诞生。 1976年5月,Int...

让x86的android模拟器能模拟arm架构系统

2016-06-24 15:51:49   来源:eefocus    关键字:x86  android模拟器能  arm架构系统 网上介绍共计三种模拟器比较常用,分别是bluestacks、...
  • dj0379
  • dj0379
  • 2016-08-01 00:49
  • 6070

x86架构手机跑安卓好吗?

http://www.ithome.com/html/android/83809.htm 华硕低价位手机ZenFone一推出就掀起市场话题,许多人也对ZenFone所采用的Intel Atom处...

genymotion模拟器x86架构转换为ARM架构方法

Genymotion 为了考虑到模拟器的运行速度,在VirtualBox基础上实现x86架构,运行与Intel x86架构处理器上能够尽可能的提高运行效率;所以,这种情况导致Genymotion模拟器...

X86 Android与ARM Android在应用上的兼容

供稿:阿普奇科技股份有限公司 2015/6/17 11:47:14 星级: 人气:1036 关键词: X86 Android ARM 摘要:Android本是Go...
  • dj0379
  • dj0379
  • 2016-08-01 00:46
  • 6130

布局平板电脑 英特尔Atom新核芯全解析

http://pad.zol.com.cn/455/4551583_all.html#p4576234 1横跨两个生态系统 着力打造低价平板   英特尔近期正式推出9款新Atom移动平台处...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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