请问在Windows上能直接开发出在linux上运行的程序吗?
在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




