LinuxSir.cn,穿越时空的Linuxsir!

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

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

[复制链接]
发表于 2005-2-22 21:57:31 | 显示全部楼层
为什么没人看我的话呢?可以交叉编译。
回复 支持 反对

使用道具 举报

发表于 2005-2-22 22:27:06 | 显示全部楼层
Post by gorf
为什么没人看我的话呢?可以交叉编译。


楼主问的是:不知如何使已经编译的文件在windows 2003下运行
回复 支持 反对

使用道具 举报

发表于 2005-2-22 22:30:05 | 显示全部楼层
楼主在写书啊?到底是反返璞归真还是??

你这本书什对哪些读者的啊,怎么要讨论这种问题,还要比较VC和GCC好坏? :ask
回复 支持 反对

使用道具 举报

发表于 2005-2-22 23:59:29 | 显示全部楼层
Post by gorf
为什么没人看我的话呢?可以交叉编译。

nod,呵呵,linux下的mingw32就可以
回复 支持 反对

使用道具 举报

发表于 2005-2-23 00:21:47 | 显示全部楼层
现在的普通应用程序是不可能直接用机器语言来操纵CPU的,操作系统不会让你这么做。所以即便是编译出来纯正的机器语言,所有的功能都由程序自己来实现,那么这个程序本身就是一个操作系统。原因很简单,这个程序需要自己调度CPU资源,什么时候来算数,什么时候输出结果;还得让操纵主板上的芯片组,让它可以在适当的时候接受键盘或者鼠标的操作;另外,也许还得操纵显卡,切换到适当的模式显示出计算结果。如果碰巧用户的硬件有点特殊,可能还要编一些驱动程序。

我还真不是瞧不起楼主,以你提出这样问题的水平,写不出什么书来。
回复 支持 反对

使用道具 举报

发表于 2005-2-23 00:48:30 | 显示全部楼层
linuuxx真的对计算机技术的理解差了些,对cpu硬件、操作系统、编译器、语言和程序搞混了。

我给你打个比喻,不同的cpu就像不同的女人,虽然做的事情差不多,但方式不一样,例如,和自己的老婆做爱跟和小姐做爱是差不多的,都得到了服务,但是微操作的指令是不同的,我们常用的Intel的指令和PowerPC的指令集就不一样,但是都能用于计算。

不同的操作系统就像不同国家的小姐,bill是印地安小姐,提供按摩和搓脚,linus是个北欧的,提供按摩和指压,虽然她们的手相同,但是服务不一样。你想让她们为你服务,必须知道她们提供的服务(系统调用),还必须能说出她们的语言(系统调用接口)。

编译器就是皮条客,替你做翻译的,当然bill和linus都互相防范,只用自己的皮条客,java是个滑头的皮条客,和两个小姐都搭上关系,为了向嫖客提供统一的服务,宣称她们都只会按摩,嫖客通过java皮条客享受不到搓背和指压。

你用某个语言写的程序就是不同国家的嫖客,向不同的小姐的皮条客说着不同的语言,皮条客为你向小姐转达你的要求,你可以说着C语言,或者p语言,让某个小姐为你按摩,当然你要付出代价,java的代价还要高一点,因为如果你去找他的话,他会把两个小姐一起带来为你按摩。

交叉编译器就像是一个卧底的皮条客,拿着bill小姐的工资,把嫖客带到linus哪里去了。

当然,如果你这个嫖客够强,当然可以绕过皮条客(不需要编译器,嘿嘿,直接用汇编),从而节约开支(程序运行的够快)。


bill小姐和linus小姐不管怎样都是提供服务的女人,只不过她们都做了自我保护,只给你提供安全的服务,但是她们都有相同的身体结构(例如在x86上,0x55都是push ebp),难道嫖客想做点别的就不行?

当然行,不过她们都很壮,也很烈,不要被她们打晕,也别让她们自杀(bsod),还有,千万别让bill做linus会做而bill不会做的事。




如果你不是嫖客,而是个采花大盗的话,你可以用特制的迷香搞晕她们(内核调试器),你想干什么都行了。




注意:迷香是她们自己准备和情人约会用的,否则她们的情人也搞不定她们,所以,这个迷香是她们自己准备迷倒自己,供别人享用的。


写的比较粗俗,希望linuuxx能看懂。
见笑了。
回复 支持 反对

使用道具 举报

发表于 2005-2-23 09:14:04 | 显示全部楼层
Post by fundawang
现在的普通应用程序是不可能直接用机器语言来操纵CPU的,操作系统不会让你这么做。所以即便是编译出来纯正的机器语言,所有的功能都由程序自己来实现,那么这个程序本身就是一个操作系统。原因很简单,这个程序需要自己调度CPU资源,什么时候来算数,什么时候输出结果;还得让操纵主板上的芯片组,让它可以在适当的时候接受键盘或者鼠标的操作;另外,也许还得操纵显卡,切换到适当的模式显示出计算结果。如果碰巧用户的硬件有点特殊,可能还要编一些驱动程序。

我还真不是瞧不起楼主,以你提出这样问题的水平,写不出什么书来。


我认为fundawang兄有点混淆了。
若能干预机器语言程序的运行,那它就不是普通的操作系统,而是虚拟机了~~~普通应用程序仍然是直接用机器语言来操纵CPU,只是必须通过操作系统来使用外设。即使是系统调用,也得转化成机器语言的中断调用来执行啊。非特权级程序在CPU中执行有诸多限制,但并再多的限制也不能改变它的机器代码直接交由CPU运行的事实。
回复 支持 反对

使用道具 举报

发表于 2005-2-23 09:30:27 | 显示全部楼层
windows下安装cygwin ,在cygwin下重新编译你的程序。编译好的程序如果需要发行,需要附带CYGWIN1.DLL
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-2-23 13:18:44 | 显示全部楼层
Post by fundawang
现在的普通应用程序是不可能直接用机器语言来操纵CPU的,操作系统不会让你这么做。所以即便是编译出来纯正的机器语言,所有的功能都由程序自己来实现,那么这个程序本身就是一个操作系统。原因很简单,这个程序需要自己调度CPU资源,什么时候来算数,什么时候输出结果;还得让操纵主板上的芯片组,让它可以在适当的时候接受键盘或者鼠标的操作;另外,也许还得操纵显卡,切换到适当的模式显示出计算结果。如果碰巧用户的硬件有点特殊,可能还要编一些驱动程序。

我还真不是瞧不起楼主,以你提出这样问题的水平,写不出什么书来。



机器语言是cpu运行的语言,这是无可置疑的。操作系统为什么不让 cpu执行机器语言?!一个能完成某一个任务的程序,就是操作系统??我要做一个程序,它运行后,把结果输出来,它只要调用操作系统的几个输入、输出就可以了,而所有操作系统都包含这些输入、输出(不论windows还是linux)。

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

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

使用道具 举报

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

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

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


从这一段话看出来,楼主基本上计算机的半筒水,看了点书,就以为是高手了。。
回去好好看看书吧,别来摆显了。。
回复 支持 反对

使用道具 举报

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

本版积分规则

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