CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Linux/Unix社区 >  程序开发区

请问在Windows上能直接开发出在linux上运行的程序吗?

楼主lumber(今天的祝福 明天的孤独)2006-03-04 10:49:07 在 Linux/Unix社区 / 程序开发区 提问

在linux上做C++的开发没有Win32上方便……  
  不知道能不能在Windows平台下,直接就编译出能在linux上运行的target   file  
  如果可以的话,我就只要在Win32上编译好程序,放到linux上执行就OK了  
  有没有知道的兄弟,告诉一声啊  
  thanks 问题点数:100、回复次数:29Top

1 楼fierygnu(va_list)回复于 2006-03-04 11:14:59 得分 10

不能。Top

2 楼darkstar21cn(≮天残≯无畏)(死亡进行时)回复于 2006-03-04 11:43:28 得分 10

目前还有这样的工具Top

3 楼darkstar21cn(≮天残≯无畏)(死亡进行时)回复于 2006-03-04 11:43:58 得分 0

打错了,应该是  
  目前还没有这样的工具  
  Top

4 楼lumber(今天的祝福 明天的孤独)回复于 2006-03-04 11:51:14 得分 0

不行啊,失望……  
  我原来还希望在Win32+Eclipse+CDT+MinGW环境下能开发linux上的程序  
  能不能讨论一下为什么不可以啊?  
  Top

5 楼robinswan()回复于 2006-03-04 11:56:43 得分 10

绝对没有可能,装虚拟环境,说不定能写出那个平台下都能编译的代码。  
  但是,说到底,不离开   Windows   是学不了   Linux   的。Top

6 楼madoldman(疯癫叟)回复于 2006-03-04 12:34:58 得分 0

为什么要在Windows下阿,不理解Top

7 楼tb01412(tb)回复于 2006-03-04 13:07:05 得分 10

用交叉编译工具不就可以了吗????  
  用cygwin环境,然后在下面使用GCC就行了Top

8 楼fierygnu(va_list)回复于 2006-03-04 13:50:10 得分 10

用交叉编译工具不就可以了吗????  
  ===  
  是可以,不过要自己编译GCC,libc、stl等库,而且受限于其它库,能开发的应用很有限,一般就用于开发嵌入式应用。象楼主这样的需求,还是回答“不能”更合适:)  
   
  能不能讨论一下为什么不可以啊?  
  ====  
  一般操作系统不同,ABI就不同,即使都是x86平台,可执行代码仍然是无法通用的。Top

9 楼lepon()回复于 2006-03-04 14:07:36 得分 0

用java编也许可以Top

10 楼justforjoy(痴心妄想)回复于 2006-03-04 16:45:52 得分 0

在windows下好源文件,放到linux下编译,执行!Top

11 楼i_noname(晚九朝五)回复于 2006-03-04 19:02:56 得分 0

cygwinTop

12 楼lumber(今天的祝福 明天的孤独)回复于 2006-03-04 20:32:48 得分 0

是可以,不过要自己编译GCC,libc、stl等库,而且受限于其它库,能开发的应用很有限,一般就用于开发嵌入式应用。象楼主这样的需求,还是回答“不能”更合适:)  
  ----------------------------------  
  我就是需要在嵌入式linux设备上做开发,现在的方法都是在本地写好c++代码,然后上传到一台配置好的linux服务器上编译,再把文件下载到PC上,再下载到linux设备上……  
  这样做好麻烦哦,而且对代码的管理也非常不方便,本地的代码和服务器上的代码经常处于不同步的状态.  
   
   
  一般操作系统不同,ABI就不同,即使都是x86平台,可执行代码仍然是无法通用的。  
  ----------------------------------  
  都是X86体系,我觉得理论上绝对是可以的.  
  Top

13 楼chouy(chouy)回复于 2006-03-04 21:48:54 得分 0

学习了。  
  感觉楼上说的对。  
  如果你要在WIN下编LIN下的程序,必须不能调用WIN下的函数库。  
  WIN下与LIN下是不同的。  
  而且你写的代码必须是标准的。  
   
  对不对,请高人再答。  
   
  还有,如果你的机器配置高的话,可以装虚拟机(LINUX),再用WIN连到虚拟机上。Top

14 楼tb01412(tb)回复于 2006-03-04 21:52:25 得分 10

你用smb嘛,在一台LINUX上放置源码,在另一台WINDOWS下通过smb直接访问修改LINUX下的代码(可以用soureinsight之类的软件来改代码),然后通过ssh来远程编译代码,然后在那台LINUX下再用cvs客户端来同步服务器上的代码,有什么不方便的????????  
   
  配置需求:一台LINUX服务器,一台LINUX公用机,N台WINDOWS客户端,可以在那台LINUX公用机上设几个用户,每个用户将服务器上的代码下载到自己的目录中,然后通过远程WINODWS机来访问!!!  
  如果你还想节省一台机子的话,就将LINUX服务器与公用机用一台来做,不过这样子公用机的负荷相当重,而且数据安全性不能保证!!!  
   
  由于WINDOWS下的可执行文件格式与LINUX下的可执行文件格式不一样,操作系统的API也不一样,运行环境也不一样,所以就不能直接在WINDOWS下编译成LINUX下的可执行文件。  
   
  在使用Cygwin时,就相当于在模拟一个LINUX下运行环境,以至于可以让GCC,MAKE等工具能运行起来,而不再需要交叉编译(假定都是基于X86),当然,Cygwin仅适用于大多数的情况,有些能在LINUX下运行的程序放在Cygwin下就有可能无法运行的,且都是基于命令行的工具,如果是GUI的,就无法在Cygwin下运行,所以一般情况下,还不如直接在LINUX下开发更好,何必要一个cygwin呢????至于那些C库,C++库等,这些在网上都是现成的,随便下载就行了,无需自己去编译!!!!!只不过某些比较稀少的库需要自己去整Top

15 楼fierygnu(va_list)回复于 2006-03-04 22:20:37 得分 0

明确一下,ABI(Application   Binary   Interface),不是API。ABI不同是代码不能执行的原因,API不是。  
  楼主要用的编译器不是cygwin->linux的编译器,是cygwin->嵌入式CPU和操作系统的交叉编译器。  
  磨刀不误砍柴工。Top

16 楼tb01412(tb)回复于 2006-03-04 23:11:31 得分 10

楼主有一句是这样说的:  
  我就只要在Win32上编译好程序,放到linux上执行就OK了  
  我的理解是在WINDOWS下写程序,编译,然后就把它放在LINUX下运行,所以我说要无法直接在WINODWS上编译的原因有三:  
  1.可执行文件格式不一样  
  2.系统的API不一样,只是标准C库对操作系统API作了封装,所以写标准C代码可以跨平台移植,前提就是在不同的平台下使用了不同的C库!!!  
  3.运行环境不一样,就这导致了有些编译工具无法直接运行,比如automake,gcc等,从而也就无法完成编译工作。  
   
  而cygwin模拟了LINUX运行环境,从而使一些基本工具能在WINDOWS下运行,从而实现编译工作,但它只是让常用的LINUX下的命令行工具可以使用,却无法使用一些诸如在GUI上可运行的软件,这就是它的局限性所在。  
   
  如果要想真正学会LINUX下的开发,最好在直接在LINUX下学习工作,LINUX下的工作效率未必就低,可以用soure   navigator进行源码分析与编辑,还可以直接调用MAKE,跟soure   insight一样好用,用DDD,gdb来调试,跟WINDOWS平台下的调试工具一样好用,用strace来跟踪程序,查看程序的系统调用,用sed,awk等来对文本操作,用各种脚本语言,应有尽有!!!!GCC对STL的支持也比较好,用SDL库编写游戏,图形界面,用GTK库,QT库,MYSQL。。。。。。Top

17 楼lumber(今天的祝福 明天的孤独)回复于 2006-03-04 23:55:13 得分 0

TO;tb01412(tb)  
  多谢你的热心回复  
  我想找一个办法用Win32+Cygwin进行linux程序的开发,也是有原因的.  
   
  因为我们的公司设备是linux的,设备不是卖给最终用户,而是卖给集成商,然后集成商面对用户开发最终的应用程序.    
  我们当然希望给集成商一个容易开发的平台,要不想说服集成商从头开始学linux开发,这个有点难……  
  Top

18 楼ljyit(木瓜)回复于 2006-03-05 12:36:06 得分 0

用虚拟机吧VMware,写程序怎能离开虚拟机呢?Top

19 楼NC(比尔.盖饭)回复于 2006-03-05 13:51:32 得分 0

建议LZ用Magic   C++,这个好用,我一直用。在这里有下载:http://www.magicunix.com/index_ch.htmTop

20 楼haodaniu(大牛)回复于 2006-03-05 15:28:28 得分 0

如果编写个kde,或gnorm图形程序,用qt,或gtk+吧,编写完程序在linux下重新编译一下即可.不是有Borland的kylix吗?Top

21 楼addone(天堂鱿鱼)回复于 2006-03-05 16:07:01 得分 0

1.Linux下有kdevelop,功能比vs强大,也很好用,就是中文问题  
  2.标准的C/C++本身是可以跨平台的,只要不使用依赖平台的函数库就好了  
  3.Windows下编译好的程序肯定无法跨平台,但是只是要在linux上能直接运行的话,还是可以的  
   
  用cygwin就可以了  
  如果涉及到界面,可以直接用qt,开源版本可以免费下载,这样开发出的程序可以轻松跨平台,如果需要在linux下运行,发布源码就一切ok了。Top

22 楼addone(天堂鱿鱼)回复于 2006-03-05 16:10:21 得分 0

刚才提到的第3点其实没什么意义,因为即使能开发出来,也没法直接调试  
  现在还是建议:  
  1.适应linux下的开发平台  
  2.换用新的跨平台特性更好的语言,例如java、pythonTop

23 楼Silo(炽天之翼)回复于 2006-03-05 16:16:42 得分 0

用虚拟机   VMware,最好512M内存。(256也可以,速度慢了点)  
   
  再安装个VMware   Tools,可以实现Windows文件和Linux文件目录共享。省得挂U盘,光驱。Top

24 楼chentianfen(yi)回复于 2006-03-05 22:01:51 得分 10

如果想在windows编译完成的二进制代码在linux运行,这不太可能  
  如果想写出可移植性的代码,在windows下写,然后编译,连接就可以在windows下运行  
  如果代码是符合C++标准,不用到其独有的平台的特性,在该平台上编译,连接运行照样可以运行  
  无论是linux还是苹果者是一样的Top

25 楼tb01412(tb)回复于 2006-03-05 23:55:04 得分 10

其实楼主完全可以使用这样的办法:  
  直接改造Eclipse,在Eclipse上实现一个你们的集成开发环境,后台还是采用cygwin+gcc的方式,这样用户在Eclipse界面上编写程序,只需点一下鼠标就可以在后台用makefile进行编译,然后再给GDB加一个图形界面,这样就可以在Eclipse上进行图形化的调试了!!!!  
  你需要去理解一下如何在Eclipse建立自己的集成开发环境这方面的内容Top

26 楼cdsh123(cdsh123)回复于 2006-03-06 07:48:29 得分 0

cygwin  
  Top

27 楼yjf7888(seeking a place 找工作了location:Chengdu)回复于 2006-03-06 16:35:09 得分 0

理论上可以实现Top

28 楼eduyu(杜宇)回复于 2006-03-14 18:15:46 得分 10

通常嵌入式系统都是这样开发的,不过实际成熟的这样的为纯linux的交叉编译环境没有,为uClinux倒是挺多。可见大家都认为没有这样的必要。因为linux下成熟的IDE非常多,你只是不去尝试而已。比如eclipse,和anjuta。Top

29 楼lumber(今天的祝福 明天的孤独)回复于 2006-06-02 17:21:04 得分 0

多谢各位了.不好意思,现在才结贴.  
  分太少了.将就吧   ^_^Top

相关问题

  • windows下编写的JAVA程序如何放到Linux下运行??
  • Windows下可以运行linux的程序吗
  • [求助]如何在linux下运行windows应用程序????
  • 如何运行WINDOWS程序?
  • Linux下的OpenGL程序是否一定要x-windows系统才能运行????
  • 如何编在windows和linux 下都能运行的 c语言程序
  • c程序在windows下编译可执行,在linux下运行不了
  • 如何在linux下运行c程序?
  • linux下的程序如何运行??????
  • 如何运行LINUX下的程序

关键词

  • c++
  • win32
  • 编译
  • windows
  • linux
  • 代码
  • cygwin
  • 执行
  • 平台
  • 跨平台

得分解答快速导航

  • 帖主:lumber
  • fierygnu
  • darkstar21cn
  • robinswan
  • tb01412
  • fierygnu
  • tb01412
  • tb01412
  • chentianfen
  • tb01412
  • eduyu

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo