LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
楼主: linuuxx

用c语言在linux下编译了的文件如何在windows下运行?

[复制链接]
 楼主| 发表于 2005-2-23 14:51:12 | 显示全部楼层
Post by netdigger
从这一段话看出来,楼主基本上计算机的半筒水,看了点书,就以为是高手了。。
回去好好看看书吧,别来摆显了。。



从你在这里的几个帖去看,未见你有一滴水。只见你说别人有半筒水。

另外,从你说话的语法去看,好似日本人!是不是日本人说中国话?.....


vs,vc,c++,c#
回复 支持 反对

使用道具 举报

发表于 2005-2-23 16:02:17 | 显示全部楼层
机器语言是cpu运行的语言,这是无可置疑的。操作系统为什么不让 cpu执行机器语言?!一个能完成某一个任务的程序,就是操作系统??我要做一个程序,它运行后,把结果输出来,它只要调用操作系统的几个输入、输出就可以了,而所有操作系统都包含这些输入、输出(不论windows还是linux)。

至于其他方面,不知你会不会瞧不起李嘉诚,他没你目中无人呀!不知你会不会瞧不起bill ,他没你年轻呀!虽然他有microsoft。

这么多朋友的理解,我认为,你说的最不到位,只是简单解析一下操作系统,而且不清楚。操作系统千差万别,一个程序包含操作系统的某些功能,为什么不可以? 2M的文件能不能包含操作系统?而大于2M的程序多还是少?如何一个程序不是游戏程序,它不用什么特殊的显卡驱程序,也能把结果显示出来!就象开机后,没装系统之前,不是也有显示??


机器语言的确是CPU运行的语言。操作系统不会不让CPU去执行机器语言。但操作系统的作用是对系统资源进行调度。有一项工作就是可以让不同机器指令集(当然是同机器语言的)在不同的时间在同一CPU上运行。你当然可以写出一个只有2M的操作系统,但这2M的操作系统能起到多大的调度作用就可想而知了。
如果你有一台裸机,你要让它正常工作,你就必须在上面放一个操作系统。在没装操作系统前,或在装有操作系统的机器开机后的前几秒,你的确是看到了显示。但这是系统BIOS的显示。BIOS的工作流程是一臣不变的。如:系统检测,从第一引导设备读入引导记录,机器从固定的内存地址运行。如果你用机器语言写一段程序,放入第一引导设备的引导区中,你开机后,这个程序就是你想象中的程序。操作系统就是这样的一个程序。而且操作系统还要复杂。它不但开机后可以运行,而且重定义了BIOS的部分或全部功能,还扩展、新增了很多功能。这样它就可以完全接管机器的所有资源。
在有了操作系统的机器上,程序就不再是简单的机器指令的集合,程序会有一些控制信息,这是为了能让相应的操作系统进调度。这个调度就是:装载,重定位地址空间等。这样这个执行文件就有了一定的格式,不同的操作系统要求有不同的格式。而这时的程序因为已经在操作系统上运行了,它就可以充分利用操作系统提的好处,就是它可以用到很多操作系统提供的资源,譬如:要输入输出,就调用操作系统提供的系统调用和库函数。可以这样说,不管有没有操作系统,你执行1+1这种操作的机器指令应该是相同的,而且最快的一定是寄存器加法指定,但你要输入输出,就大不相同了,在没操作系统时你最多只能用BIOS操作,而有了操作系统后你只能用操作系统的系统调用和库函数。这点,不同的操作系统上又不一样。所以说你的想法根本不行。
有人说到了交叉编译,就是在一种系统上编译出另外一个系统的程序。但这个程序也只能在另外一个操作系统上运行而不能在本操作系统上运行。
你也可以用模拟环境运行。如:wine即linux运行window程序。但其程序实际上也只是另一个操作系统的程序而非本操作系统的程序。
你写书是误人子弟。你现在写计算机方面的书就象是我现在去造原子弹一样。
回复 支持 反对

使用道具 举报

发表于 2005-2-23 17:09:36 | 显示全部楼层
呵呵,大家说得够多的啦。现在编译出来的程序一般在运行时都需要操作系统的支持。但是也有例外,如grub这样的系统引导程序。我建议linuuxx去学习一下linux或者windows下的汇编,深入理解一下操作系统对程序运行所起的作用。
回复 支持 反对

使用道具 举报

发表于 2005-2-23 19:53:19 | 显示全部楼层
Post by linuuxx
从你在这里的几个帖去看,未见你有一滴水。只见你说别人有半筒水。

另外,从你说话的语法去看,好似日本人!是不是日本人说中国话?.....


vs,vc,c++,c#


偶是没有水平的,但是我知道我的水平如何,所以不会和某人一样,异想天开去写书,再去祸害别人,我到这儿,要么请别人帮忙,要么回答一些简单我所知道的问题。

附:别把我和日本猪扯一起。。 :mad:
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-2-23 20:52:31 | 显示全部楼层
Post by masterdemon
机器语言的确是CPU运行的语言。操作系统不会不让CPU去执行机器语言。但操作系统的作用是对系统资源进行调度。有一项工作就是可以让不同机器指令集(当然是同机器语言的)在不同的时间在同一CPU上运行。你当然可以写出一个只有2M的操作系统,但这2M的操作系统能起到多大的调度作用就可想而知了。
如果你有一台裸机,你要让它正常工作,你就必须在上面放一个操作系统。在没装操作系统前,或在装有操作系统的机器开机后的前几秒,你的确是看到了显示。但这是系统BIOS的显示。BIOS的工作流程是一臣不变的。如:系统检测,从第一引导设备读入引导记录,机器从固定的内存地址运行。如果你用机器语言写一段程序,放入第一引导设备的引导区中,你开机后,这个程序就是你想象中的程序。操作系统就是这样的一个程序。而且操作系统还要复杂。它不但开机后可以运行,而且重定义了BIOS的部分或全部功能,还扩展、新增了很多功能。这样它就可以完全接管机器的所有资源。



只说几句!目前为止,我不知道在上面我说的哪一句是错误的。你确实写了很多,但总的来说,只是重复上面别人说过的,那里多数是对的,但除了别人说过的之外,其他就不是很清析了,看了你的帖,我联想到的是目前书店卖的一些书,厚厚一本,看似内容充实,买了就后悔,因为看真一点,原来只是到处摘抄一点,乱编的,还有就是发之前,审核一下,别编辑后,还是有不少错别字,令人读到最关键的地方,又不知说的是什么意思!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-2-23 21:00:20 | 显示全部楼层
Post by netdigger
偶是没有水平的,但是我知道我的水平如何,所以不会和某人一样,异想天开去写书,再去祸害别人,我到这儿,要么请别人帮忙,要么回答一些简单我所知道的问题。

附:别把我和日本猪扯一起。。 :mad:



说写书不是我要重点表述的!也无意说我有什么水平,不过见议你不要说自己没水平,水平多少都会有的!!甚至说不定要请教你也有可能!只不过关键是,要自认有水平,才能说别人有水平或没水平,这是关键!
回复 支持 反对

使用道具 举报

发表于 2005-2-23 21:35:56 | 显示全部楼层
Post by linuuxx
只说几句!目前为止,我不知道在上面我说的哪一句是错误的。你确实写了很多,但总的来说,只是重复上面别人说过的,那里多数是对的,但除了别人说过的之外,其他就不是很清析了,看了你的帖,我联想到的是目前书店卖的一些书,厚厚一本,看似内容充实,买了就后悔,因为看真一点,原来只是到处摘抄一点,乱编的,还有就是发之前,审核一下,别编辑后,还是有不少错别字,令人读到最关键的地方,又不知说的是什么意思!


少见多怪
没有本事用C写出来独立于特定操作系统的程序,还怪C编译器
回复 支持 反对

使用道具 举报

发表于 2005-2-23 21:36:55 | 显示全部楼层
Post by linuuxx
说写书不是我要重点表述的!也无意说我有什么水平,不过见议你不要说自己没水平,水平多少都会有的!!甚至说不定要请教你也有可能!只不过关键是,要自认有水平,才能说别人有水平或没水平,这是关键!


恩,可以看出你说绕口令的水平还是很高的
回复 支持 反对

使用道具 举报

发表于 2005-2-23 22:07:01 | 显示全部楼层
Post by linuuxx
说写书不是我要重点表述的!也无意说我有什么水平,不过见议你不要说自己没水平,水平多少都会有的!!甚至说不定要请教你也有可能!只不过关键是,要自认有水平,才能说别人有水平或没水平,这是关键!

各位不要太激动了,大家来论坛是为了互相交流和学习的,单纯的争吵不会对自己带来什么好处。 ;)
对于linuuxx来说,当自己对计算机的某些错误理解被大家当成笑话的时候,确实是让人感到非常尴尬的。我也有过类似的经历,所以我能理解linuuxx的心情。但在痛苦之后,自己就应该接受现实,针对缺点和不足进行学习和反思,进一步提高自己的计算机水平。如果持续进行无谓的争吵,能提高自己的水平吗?
对于其它人来说,任何人都是从初学者一步一步走过来的,都有过学习中的困惑和迷茫,当看到别人有问题时,自然应该客观地指出其缺点和错误,但要对事不对人,以免引起不必要的争吵。
回复 支持 反对

使用道具 举报

发表于 2005-2-23 23:00:40 | 显示全部楼层
Post by linuuxx
说写书不是我要重点表述的!也无意说我有什么水平,不过见议你不要说自己没水平,水平多少都会有的!!甚至说不定要请教你也有可能!只不过关键是,要自认有水平,才能说别人有水平或没水平,这是关键!



水平不是自认的。

计算机里计算数据不难,这是计算机的强项,1G主频的cpu计算1+1=2只要几纳秒,但是让计算机从键盘接受1+1的输入,把2这个字符显示在屏幕上,cpu自己是做不了的,需要很多接口电路配合,很复杂,你可以试着写一个printf函数,看看需要多长时间,需要了解多少知识。

如果能在两个系统上写出printf函数,你就不会问这些问题了
回复 支持 反对

使用道具 举报

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

本版积分规则

快速回复 返回顶部 返回列表