免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3126 | 回复: 6
打印 上一主题 下一主题

为什么gcc helloworld.c 后的a.out在windows下运行不了? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-03-08 09:02 |只看该作者 |倒序浏览
为什么gcc helloworld.c 后的a.out在windows下运行不了?

a.ou是编译好的i386汇编指令,都是i386的CPU ,为什么,运行不了呢?

论坛徽章:
0
2 [报告]
发表于 2007-03-08 15:24 |只看该作者
原帖由 kingroc 于 2007-3-8 09:02 发表于 1楼  
为什么gcc helloworld.c 后的a.out在windows下运行不了?
a.ou是编译好的i386汇编指令,都是i386的CPU ,为什么,运行不了呢?


因為 windows 與 linux 程式檔組成格式不一樣,甚至系統呼叫函數也都不一樣,所以無法使用。

--

论坛徽章:
0
3 [报告]
发表于 2007-03-08 15:41 |只看该作者
System Call 不一样.
Windows 下的可执行文件是 PE 格式, Linux 下的是 ELF 格式, 两者不是一回事.

论坛徽章:
0
4 [报告]
发表于 2007-03-12 15:40 |只看该作者
谁 能 详 细 回 答 呢 ? ?

论坛徽章:
0
5 [报告]
发表于 2007-03-12 19:04 |只看该作者
.

因为 Windows 没有对 Linux ELF 的二进制仿真。

.

论坛徽章:
0
6 [报告]
发表于 2007-03-12 19:29 |只看该作者

不是说.out与elf的文件不同吗?

不是说.out是以前的二进制程式而elf比较的新吗?那么它们也应该是不一样的吗?

论坛徽章:
0
7 [报告]
发表于 2007-03-12 20:08 |只看该作者

回复 #6 美丽水瓶 的帖子

.

这个又扯远了。a.out 只是 Unix 下约定俗成,或者被称为传统的用户生成的可执行文件名字。系统的可执行文件都有自己的名字,用户生成的默认是 a.out。不过用 -o 选项可以改变生成时的这一行为。

至于 a.out 的实际格式,那又是平台相关了。早期的 Linux 只接受 a.out 格式的可执行文件,后来逐渐接纳了 ELF。不过 ELF 确实很古老。你若是问,名字为 a.out 的文件到底是何格式的,那谁也不知道答案。

.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP