admin 管理员组文章数量: 887016
linux arm 无法执行二进制文件,qemu
我使用qemu,qemu-user和安装的gnueabi工具链运行Linux Mint 14。我用arm-linux-gnueabi-gcc test.c -o test编译了test.c。qemu-arm无法运行arm编译的二进制文件
当我尝试运行qemu-arm /usr/arm-linux-gnueabi/lib/ld-linux.so.3 test
我得到一个错误说:test: error while loading shared libraries: test: cannot open shared object file: No such file or directory。运行qemu-arm test,正如我以前的尝试,给出/lib/ld-linux.so.3: No such file or directory
但是,该文件确实存在,并且可以访问。
$ stat /usr/arm-linux-gnueabi/lib/ld-linux.so.3
File: `/usr/arm-linux-gnueabi/lib/ld-linux.so.3' -> `ld-2.15.so'
Size: 10 Blocks: 0 IO Block: 4096 symbolic link
Device: 801h/2049d Inode: 4083308 Links: 1
Access: (0777/lrwxrwxrwx) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2013-04-22 16:19:48.090613901 -0700
Modify: 2012-09-21 08:31:29.000000000 -0700
Change: 2013-04-22 15:58:41.042542851 -0700
Birth: -
有谁知道我怎样才能使QEMU运行的ARM程序,而不必效仿的整个手臂的Linux内核?
test.c的是
#include
int main() {
printf("this had better work\n");
}
和file test是
test: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.31, BuildID[sha1]=0xf2e49db65394b77c77ee5b65b83c0cc9220cbfc0, not stripped
2013-04-23
David
+4
如果在没有OS的情况下运行,printf是你想要做的最后一件事,当然不是你想为该系统编写的第一个程序。打开一个在qemu上没有意义的led,但是将一个字符从串行端口/ uart干扰到串行终端通常是不重要的。你也想从一个汇编程序开始,而不是C,因为你必须确保你了解内存映射,程序加载的地方等等,引导代码也不是微不足道的。 –
2013-04-23 17:01:52
+0
这来自未安装arm库作为系统库(即使它们被安装为交叉编译器的目标库)。如果发行版支持它,那么可以将arm安装为多目标目标(如同时支持x86和x86_64)。在Ubuntu中,这就像'apt-add-architecture arm && apt-get install libc6:arm'。我不知道薄荷。如果你不想去考虑它,只需用'-static'编译。 –
2017-09-15 21:00:08
本文标签: linux arm 无法执行二进制文件 qemu
版权声明:本文标题:linux arm 无法执行二进制文件,qemu 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1686916361h47309.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论