当前位置: 技术问答>linux和unix
求教从Windows->Linux移植的解决方案
来源: 互联网 发布时间:2015-10-15
本文导语: 我大致说明一下项目的情况: 1. 项目是在Windows上开发,用VC开发的,是一个console程序 2. 项目由多个工程组成,有些工程是生成DLL,有些是生成静态lib的,主工程主要是做框架性工作。 3. 程...
我大致说明一下项目的情况:
1. 项目是在Windows上开发,用VC开发的,是一个console程序
2. 项目由多个工程组成,有些工程是生成DLL,有些是生成静态lib的,主工程主要是做框架性工作。
3. 程序涉及多线程与网络通讯,其中多线程为了移植,采用的是pthread在Windows中的库,网络通讯就是纯socket了
4. 代码的其它方面,由于早就考虑了后续工作要将程序移植到Linux上,因此,代码全部采用标准C/C++,而没有使用MFC或Windows API。
整个项目的程序就是这样了。现在需要将它移植到Linux下,请问采用什么方案比较好? 比如说,采用什么样的IDE开发环境比较合适,还有Windows中的DLL和lib方式肯定要弃用了,那么整个项目的结构应该是什么样的?(我想,总不至于全部合成一个大工程吧?),如果还能保持多个工程的状态,那么,应该如何设置,如何连编……
希望高手给点建议,不胜感谢!
1. 项目是在Windows上开发,用VC开发的,是一个console程序
2. 项目由多个工程组成,有些工程是生成DLL,有些是生成静态lib的,主工程主要是做框架性工作。
3. 程序涉及多线程与网络通讯,其中多线程为了移植,采用的是pthread在Windows中的库,网络通讯就是纯socket了
4. 代码的其它方面,由于早就考虑了后续工作要将程序移植到Linux上,因此,代码全部采用标准C/C++,而没有使用MFC或Windows API。
整个项目的程序就是这样了。现在需要将它移植到Linux下,请问采用什么方案比较好? 比如说,采用什么样的IDE开发环境比较合适,还有Windows中的DLL和lib方式肯定要弃用了,那么整个项目的结构应该是什么样的?(我想,总不至于全部合成一个大工程吧?),如果还能保持多个工程的状态,那么,应该如何设置,如何连编……
希望高手给点建议,不胜感谢!
|
没有采用windowsAPI的话,应该移植起来没太大的问题,只看你的代码是不是符合C/C++标准了。socket和pthread可能有些不大的差别,多看man帮助好了。
unix下也有类似windows的.lib和.dll的机制,对应.lib的是.a,用ar命令把.o打包起来生成的。对应.dll的是.so,不同系统有不同生成方法,linux下是用gcc -fPIC -shared -o xxx.so xxx.c 这样编译的。
unix下也有类似windows的.lib和.dll的机制,对应.lib的是.a,用ar命令把.o打包起来生成的。对应.dll的是.so,不同系统有不同生成方法,linux下是用gcc -fPIC -shared -o xxx.so xxx.c 这样编译的。
|
Windows中的DLL和lib 方式是跟 unix 学的,unix 里用 .so(hp-ux 下可能是 .sl) .a
unix 下不要用 IDE 因为还要考虑 IDE 本身在各种 unix 平台是否可以运行。
用 emacs 编辑, gcc 编译 gdb 调试这样基本上是在所有的unix 平台都可以。
也没有什么不方便的 apache 工程够大了吧,都是这么写的,只有用惯了 windows
的人才会觉得 IDE 很重要。
unix 下不要用 IDE 因为还要考虑 IDE 本身在各种 unix 平台是否可以运行。
用 emacs 编辑, gcc 编译 gdb 调试这样基本上是在所有的unix 平台都可以。
也没有什么不方便的 apache 工程够大了吧,都是这么写的,只有用惯了 windows
的人才会觉得 IDE 很重要。
|
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版本,拼音输入激活出错。
还有一个方法是用boost,自己带跨平台的编译工具,叫bjam。还可以考虑使用ant及其扩展,或者eclipse,c++buildx看 上去也可以
请问众高手,win下的emacs怎么输入中文,用扫描版本????我是21。3。1版本,拼音输入激活出错。
|
用Kylix或者C++ Builder X可能会容易一点。
|
用pthread做线程,用.so代替dll,用信号模拟消息,纯socket在win32/unix下都可以用。
至于工程,学习一下makefile的写法就行。
编辑器继续用VC也行,ftp到linux下去编译就行了。楼主这个项目移植起来应该不难。
至于工程,学习一下makefile的写法就行。
编辑器继续用VC也行,ftp到linux下去编译就行了。楼主这个项目移植起来应该不难。
|
其实,现在有很多不错的GUI下的IDE,只是不是很想去用觉得也不是很必要,所以都没有去用;
QT是不错(以前我也用过),但就不知道其它的UNIX行不行,LINUX下是没有问题了;
其它还有像Kylix,C++ BuilderX,Eclipse等;
至于版本的控制CVS不就OK啦
好像C++ Builder X和C++ Builder是不同的!
QT是不错(以前我也用过),但就不知道其它的UNIX行不行,LINUX下是没有问题了;
其它还有像Kylix,C++ BuilderX,Eclipse等;
至于版本的控制CVS不就OK啦
好像C++ Builder X和C++ Builder是不同的!
|
好像一直都在讨论工具的问题。其实这个问题应该没有什么好讨论的啊,
很多 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 去看一看吧,对于跨平台
开发者来说是很值得借鉴的。不过我觉的跨平台开发最值得讨论的不应该是工具,
而应该程序的构架。
|
上面说的都不错。其实,你写的如果不是GUI程序就不要用GUI下的IDE了。
emacs我是正准备进入中,所以,也不是很熟悉。
不过我一直都在用VI,因为每个*nix版本都会自带VI,而emacs就得自已去安装。
不过emacs是一个真正的IDE,所以也有很多人用。
其实,VIM也有不少人在做其扩展插件,看起来也很像一个IDE,但是只是像而以。
这也许就是她们的区别所在吧。
不过我还是很喜欢VI那种简洁的方法,这也是很多人喜欢VI的原因吧。
其实,没有像QT之类IDE也是可以管理好项目的,你可用make来管理就好了!
emacs我是正准备进入中,所以,也不是很熟悉。
不过我一直都在用VI,因为每个*nix版本都会自带VI,而emacs就得自已去安装。
不过emacs是一个真正的IDE,所以也有很多人用。
其实,VIM也有不少人在做其扩展插件,看起来也很像一个IDE,但是只是像而以。
这也许就是她们的区别所在吧。
不过我还是很喜欢VI那种简洁的方法,这也是很多人喜欢VI的原因吧。
其实,没有像QT之类IDE也是可以管理好项目的,你可用make来管理就好了!
|
Qt是个很好的选择呀,我就一直用Qt.而且它提供了很多类,很方便使用。