跨平台编程

jua*_*uan 6 c c++ linux windows cross-platform

我需要为大学写一个小程序.问题是,它必须在linux下的C/C++中,而且我从未使用过linux,我预计IDE,编译等等都会遇到很多问题.

是否可以在Windows下编码,然后"复制/粘贴"代码并在linux下编译?如果可能的话,我应该知道哪些限制?

它将是一个小程序,使用套接字的典型客户端/服务器通信.

Dar*_*mas 27

我认为你应该继续在Linux(gcc?)下进行.这将教你一些关于'老派'编程的东西.忘记使用IDE,使用vim(如果你已经得到它)或nedit(更像是记事本).

在命令行上编译.自己链接.写一个make文件来做这件事.

这是基础知识.在使用IDE之前,您需要了解它.当你还在大学时这样做,因为这很痛苦,你会(并且应该)想要使用IDE进行实际工作!

另外,对Unix的基本理解并不难实现(我已经找到了绕过Solaris,Ubuntu和OS X的方法,来自Windows背景) - 一些简单的教程应该可以让你运行起来.编写小项目学校,有没有什么你需要知道:cd,ls,mkdir,make,gcc(一定要使用g++的C++项目-以前已经咬伤了我在我的Mac ...).靠近您的主目录(~).

在目标系统上执行项目将帮助您正确获取某些内容:在执行这些简单的套接字和pthread示例时,我发现编译并将它们链接为非平台可移植的.在某些系统中,库中的链接需要以这种方式完成,而其他方式则是这样.

顺便说一句:如果你真的希望这样做Windows下,最好的办法是让Windows下POSIX环境.如果我没记错的话,POSIX套接字与Windows网络模型不同.

尝试使用MinGW或Cygwin.两者都应该在Windows下为您提供*nix开发环境.您可以使用自己喜欢的文本编辑器(vim的Windows端口?)和cmd.exe而不是bash来启动编译器:)

编辑:对不起,如果语气是对抗的(根据评论).我会试着稍微软化一下.这只是......我看到很多人试图用IDE学习C/C++(或者说Java),并开始相信它们会妨碍它们的开始.当然,你需要更好的工具用于现实生活中的程序,但是学校样本项目的项目文件等的开销会增加混乱.这也让你的家庭作业很难发送给你的老师 - 带有一堆.c和.h文件的zip文件和一个makefile真的很简单......

  • 这对于倾向于Unix方式(tm)(当然是modulo s/vim/emacs/g)是个好建议,但是为了完成工作,他可能更好地使用eclipse或其他东西. (5认同)
  • @Juan:好笑,我在MS Windows上遇到同样的问题("找不到基本的东西").无论如何,如果你为目标平台编程,知道它不会伤害你的程序...... (5认同)
  • 如果没有它就无法构建代码,那么IDE就成了一个拐杖.无论平台如何,请确保您可以在没有IDE的情况下完成交付,并且仅将IDE作为开发的加速器.独立是关键. (3认同)
  • 你的语气有点对抗,但我同意你的陈述.学习如何在给定环境中编程的最佳方法是直接进入.+ 1 (2认同)

e.J*_*mes 8

如果您需要在Windows中进行编码,我建议使用mingw/msys作为开发环境.Msys在windows上实现类似unix的shell,mingw是gnu编译器集合(gcc)的一个端口,以及windows平台的其他gnu构建工具.它是一个开源项目,非常适合这项任务.

安装过程可能有点棘手,但我发现最好的起点就在这里.


Ree*_*sey 7

从技术上讲,您可以编写大量代码,这些代码可以在Windows和Linux平台上进行很少的更改.

但是,在某些情况下,事情变得棘手.从linux - > windows开始往往比从windows - > linux更容易,因为Windows用户倾向于使用没有linux等价物的Windows API调用.

如果您要使用GUI,则需要尝试使用跨平台GUI.Qt或wxWidgets是不错的选择.特别是,Qt还有许多不在GUI空间之外的跨平台实用程序类,并且可能有助于解决套接字问题.

如果你的目标只是让它在linux上工作,并且软件不必在Windows上运行,我建议你从一开始就试着让它在那里工作.它比尝试移植更容易.

至于Linux IDE - 在某些时候,计划跳入并使用Linux工具 - 你需要一个不同的构建系统(除非你使用像cmake或scons这样的跨平台解决方案),如果你使用IDE,会有不同的IDE等

如果您习惯于在集成IDE中工作,那么KDevelop是一个不错的IDE,比从命令行尝试所有操作更熟悉.


Rad*_*Rad 5

看看QT库和工具

  • 不,Qt很简单,他不需要商业许可证. (2认同)