移植到linux平台
请教各位一个问题
我目前是在windows+vs2010下开发的代码(以windows services方式运行),
用户现在提出需要在linux下运行.
这个CodeBlocks是否可以在windows下将项目编译为可以在linux平台下运行的可执行程序?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(12)
vs2015, vc++ for linux , vm workstation , lubuntu
首先编译poco框架, 然后创建一个unix项目hello world, 可以在虚拟机上执行了.
下一步准备编译我自己的项目文件了.
Windows上装个目标Linux虚拟机,然后
https://blogs.msdn.microsoft.com/vcblog/2016/03/30/visual-c-for-linux-development/
谢谢各位大神回复. 项目主要用了stl和poco框架, 应该改动不会太大.
因为是linux的小白, 所以想在windows下使用工具,编译成linux下可执行的程序即可.
可能会需要把项目文件转换为linux的makefile, 有没有什么工具, 可以直接导入项目,然后编译即可, 越简单越好. 谢谢啦
只要没用到相关的平台库,就可以移植到linux下面用g++重新编译;如果用到了就替换相关的库,用宏区别系统!
话说,搞死一个程序员只要改3次需求就可以了
从你的描述看,基本上可以肯定你大量使用了windows的api,如果要迁移,要重写很多代码:包括但不限于网络通讯、字符串、service。不涉及ui那就还好。把网络方面替换成libev库,CString换成stl。如果代码框架合理,业务代码可以复用能省不少时间。
看你是否使用了windows的api,如果大量使用windows api或者mfc,那就基本不可能。如果只用了boost和stl等跨平台的第三方库,一般还是可以迁移的,但是会有坑。至于编译成linux可执行文件,一是把代码放到linux机器上编译,二是在windows上mingw交叉编译。总之基于第三方跨平台库是可以实现你的要求的,编译不是问题。
我听说过在Linux上用GCC交叉编译构建Windows二进制,但反过来Windows上用VS就未必行了,至少我没听说过微软VS支持编译死对头二进制Linux文件.
在Ubuntu/Debian上交叉编译Windows版FileZilla:
https://wiki.filezilla-project.org/Cross_Compiling_FileZilla_3_for_Windows_under_Ubuntu_or_Debian_GNU/Linux
在Linux上交叉编译Windows版Geany:
http://www.geany.org/Support/CrossCompile
我用的是stl和poco的框架. 应该改动不会太大. 想在windows下编译成可运行在linux的, 具体怎么做呢. 谢谢
回复
建议用IDE,eclipse或者qt,导入你的代码,编译然后修改错误。既然你用的winapi不多,那么应该很快就能搞定。
回复
可以用CodeBlocks这类IDE来将你的代码组织到linux平台上,然后配置好相关编译环境,编译,并修正相关错误,例如API方面、数据类型方面的
把win32的api改为对应linux的api实现,或者用标准c和c++库,或者用其他可移植的第三方库实现
不能
“一次编译到处执行” 这个是java的口号
c/c++如果没有调用到windows相关api或者库 可以做到“一次编写 到处编译”