求教从Windows->Linux移植的解决方案

Brierbird 2004-07-27 11:39:24
我大致说明一下项目的情况:
1. 项目是在Windows上开发,用VC开发的,是一个console程序
2. 项目由多个工程组成,有些工程是生成DLL,有些是生成静态lib的,主工程主要是做框架性工作。
3. 程序涉及多线程与网络通讯,其中多线程为了移植,采用的是pthread在Windows中的库,网络通讯就是纯socket了
4. 代码的其它方面,由于早就考虑了后续工作要将程序移植到Linux上,因此,代码全部采用标准C/C++,而没有使用MFC或Windows API。

整个项目的程序就是这样了。现在需要将它移植到Linux下,请问采用什么方案比较好? 比如说,采用什么样的IDE开发环境比较合适,还有Windows中的DLL和lib方式肯定要弃用了,那么整个项目的结构应该是什么样的?(我想,总不至于全部合成一个大工程吧?),如果还能保持多个工程的状态,那么,应该如何设置,如何连编……
希望高手给点建议,不胜感谢!
...全文
379 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
yinleiyoung 2005-08-22
  • 打赏
  • 举报
回复
学习
Brierbird 2004-08-02
  • 打赏
  • 举报
回复
To badlygirl(紫诺): 那自然是应该可以,如QString之类的,只是因为我是代码移植没必要用到它了。
badlygirl 2004-08-02
  • 打赏
  • 举报
回复
To:
Brierbird(荆棘鸟)
呵呵。:)
badlygirl 2004-08-01
  • 打赏
  • 举报
回复
To:
Brierbird(荆棘鸟)
Qt提供的类也可以用于后台操作,不是吗?
它也可以对数据库进行操作,还有现在的Qt也支持OpenGL,等等。
Qt提供了大约250个类。
我其实并不是Qt的变向支持者,只是觉得这也是一个不错的支持
跨平台的类库,别的东西也很好。
多谢指教!
Brierbird 2004-08-01
  • 打赏
  • 举报
回复
To LeLeGhost(禅师) : 谢谢,只是现在不可能去看那些源代码了,没时间:(
To All: 经过上面的大家的讨论,我心里也有数了,我发文的目的主要是确定用什么工具来方便地编译和调试移植过来的工程,现在我打算用KDevelop来作为这个工作了,至于Qt,也用不到,本来就不是一个UI程序。初用KDevelop,如何将原有的多个工程保存原样,调用lib之类方法,已超出本贴范围,如有疑问,我会再行开贴向大家请教的:)
谢谢楼上各位,结贴,散分。
LeLeGhost 2004-07-31
  • 打赏
  • 举报
回复

好像一直都在讨论工具的问题。其实这个问题应该没有什么好讨论的啊,
很多 unix 下开源工程比如: mozilla、apache 等应该应该已经给出了良
好的范例了。

比如 mozilla 吧
源代码管理 CVS
源代码变更跟踪和察看 Bonsai 和 LXR
持续编译 Tinderbox
bug 管理用 Bugzilla
编译管理 GNU make 和 MS 的 nmake

编译工具和调试工具 比较复杂,我只对 mozilla 的 nspr 部分的早期版本
做过,nspr 在 windows 上用 vc 编,linux 和 solaris
上用 gcc, hp-ux 上用 hp 的 acc,ibm aix 上用 ibm
的visual age c++ 调试当然也用相应的。不过好像也听说
有用 gcc 都能编的。


其实不如你自己去下一套 mozilla 源代码,或者 apache 去看一看吧,对于跨平台
开发者来说是很值得借鉴的。不过我觉的跨平台开发最值得讨论的不应该是工具,
而应该程序的构架。






fi9 2004-07-30
  • 打赏
  • 举报
回复
其实,现在有很多不错的GUI下的IDE,只是不是很想去用觉得也不是很必要,所以都没有去用;
QT是不错(以前我也用过),但就不知道其它的UNIX行不行,LINUX下是没有问题了;
其它还有像Kylix,C++ BuilderX,Eclipse等;
至于版本的控制CVS不就OK啦

好像C++ Builder X和C++ Builder是不同的!
jellen 2004-07-29
  • 打赏
  • 举报
回复
用Kylix或者C++ Builder X可能会容易一点。
Brierbird 2004-07-29
  • 打赏
  • 举报
回复
主要是在Windows编程习惯了用IDE,而且对IDE中的可视的调试方式比较习惯,一下子用vi/emacs的话,那么用gdb调试起来,不习惯的话,会比较费事。
如果使用QT之类的IDE的话,在版本管理方面(如用csv),会不会比用vi来写的方式更容易些?抑或者是一样?因为我还需要考虑版本管理,在Windows中用Source Safe习惯了,如果不能很好地保存历史修改信息的话,不好比较和查错及后退……
再请教,谢谢
fi9 2004-07-29
  • 打赏
  • 举报
回复
上面说的都不错。其实,你写的如果不是GUI程序就不要用GUI下的IDE了。
emacs我是正准备进入中,所以,也不是很熟悉。
不过我一直都在用VI,因为每个*nix版本都会自带VI,而emacs就得自已去安装。
不过emacs是一个真正的IDE,所以也有很多人用。
其实,VIM也有不少人在做其扩展插件,看起来也很像一个IDE,但是只是像而以。
这也许就是她们的区别所在吧。
不过我还是很喜欢VI那种简洁的方法,这也是很多人喜欢VI的原因吧。

其实,没有像QT之类IDE也是可以管理好项目的,你可用make来管理就好了!
Brierbird 2004-07-29
  • 打赏
  • 举报
回复
To badlygirl: 虽然我没有用过QT,但是对QT早有耳闻,不过,在我这里,它的提供的类对我这个项目来说倒没什么用,因为我的程序主要就是后台服务功能,不需要UI界面:) 如果用QT的话,那么主要是想利用它的IDE调试环境。

To jellen(类痴狂人): 用C++ Builder X的话,那么,在Windows平台中也就可以同样的采用C++ Builder,是这个意思吗?谢谢
Brierbird 2004-07-29
  • 打赏
  • 举报
回复
To yjf7888()(): 我的项目里,由于预先的考虑,在很多地方实际上已经是采用宏,将一些Linux/Windows函数使用不相同的地方进行了区分了。只不过,现在问题就是在调试这一块,因为肯定还会有些错,那么,如果能有类似Windows中VC/Delphi这样的变量随时参看、同时看代码,设断点最好了。因为我用了一下gdb,感觉很不直接,每次设的断点,重新进行gdb时,又得重新设,想watch的变量也得每次都重新设,感觉实在不方便:(
还有,您所提到的“编辑器继续用VC也行,ftp到linux下去编译就行了”,不知道这话如何理解?是否是针对改用C++ Builder来进行两种平台的相似性编译而言?
badlygirl 2004-07-29
  • 打赏
  • 举报
回复
Qt是个很好的选择呀,我就一直用Qt.而且它提供了很多类,很方便使用。
yjf7888 2004-07-29
  • 打赏
  • 举报
回复
我有一项目跟楼祝的类似,用条件编译同时维护了两种平台下的版本,调试起来很方便。
yjf7888 2004-07-29
  • 打赏
  • 举报
回复
用pthread做线程,用.so代替dll,用信号模拟消息,纯socket在win32/unix下都可以用。
至于工程,学习一下makefile的写法就行。
编辑器继续用VC也行,ftp到linux下去编译就行了。楼主这个项目移植起来应该不难。
LeLeGhost 2004-07-28
  • 打赏
  • 举报
回复
Windows中的DLL和lib 方式是跟 unix 学的,unix 里用 .so(hp-ux 下可能是 .sl) .a

unix 下不要用 IDE 因为还要考虑 IDE 本身在各种 unix 平台是否可以运行。

用 emacs 编辑, gcc 编译 gdb 调试这样基本上是在所有的unix 平台都可以。
也没有什么不方便的 apache 工程够大了吧,都是这么写的,只有用惯了 windows
的人才会觉得 IDE 很重要。
bbscbb 2004-07-28
  • 打赏
  • 举报
回复
xpcom采用的是native的compiler,在win下是用vc编译的。下载xpcom stand along,装上cygwin,应为要使用cygwin的build工具,用vc6+sp5编译。我编译成功过,只是应为好玩。mozilla可不是吹出来的。


还有一个方法是用boost,自己带跨平台的编译工具,叫bjam。还可以考虑使用ant及其扩展,或者eclipse,c++buildx看 上去也可以

请问众高手,win下的emacs怎么输入中文,用扫描版本????我是21。3。1版本,拼音输入激活出错。

Brierbird 2004-07-28
  • 打赏
  • 举报
回复
To bbscbb: 项目本来就是考虑要跨平台的,我现在说的console程序是服务端的,所以不可能采用COM来写服务端。至于客户端,用了COM和JavaBean两种形式来实现了。
To pacman2000: 谢谢,还有,用gcc的话,工程大了是不是方便,有什么方便的IDE比较方便的?qt? kylix? ……谢谢

请大家踊跃发言哪,再次先行谢过!
Brierbird 2004-07-28
  • 打赏
  • 举报
回复
To LeLeGhost: 嗯,说得很在理。我的确是用惯了IDE,对于非IDE的调试比较陌生,gcc和gdb与emacs之间是独立的,还是可以嵌在emacs中使用呢?emacs与vim相比,有何长处?谢谢!
bbscbb 2004-07-28
  • 打赏
  • 举报
回复
win下开发的东西竟然不用com,佩服。。
如果再来一次,就用xpcom,包含了线程÷网络÷gui模块。
加载更多回复(1)

23,120

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧