关于 C++ 跨平台的问题

原帖链接:http://zhidao.baidu.com/question/104517556.html

问题:

我想做个C++程序,生成的可执行文件既能用在WINDOWS平台上,也能用在LINUX平台上,请问我应该用什么编译器,还有应该注意什么


答案0:

能告诉你的只有这个真的很困难,要注意的事情一大堆。

第一,WINDOWS 和 LINUX 在某些基本类型的内存分配是不一样的,

比如 WINDOWS 不支持 long int 和 long double,

你如果查看它们的大小就会发现它们其实和 long 和 double 的大小是一样的。

而在 LINUX 下这两种类型有更长的内存分配。

所以如果你用了 long 或者 long double 的指针,然后进行指针运算,那么在 LINUX 下肯定会出问题,因为没有移动到正确的地方。

第二,有些 WINDOWS 下的特定系统命令在 LINUX 下是不能用的,

比如system("PAUSE"),还有不少头文件也是不同时支持两个平台的,你要把这些都查清楚才行。

第三,单纯的可执行文件的话没什么问题,可如果你要加入动态库的话问题就来了。

WINDOWS 下用的是 dynamic linked library,也就是 DLL 文件,而 LINUX 下用的是 shared object(SO),

这两种完全不兼容不管你是否避免的上面的两种问题。

所以你更不用指望使用 MFC 或其它 WINDOWS 下制作的图形界面了。

LINUX 下最常用的 C++ 编译器是 GNU 系列的 GCC 或 G++,这两个一般在安装 LINUX 的时候都应该有安装,没有的话你可以从网上下载,免费。

不过因为是命令型的编译器,你需要知道相对应的编译和调试命令,这些上网查就可以了。

最后再加一句,真想写跨平台的程序还是用 Java 吧,那个保险一点。


答案1:

做不到。

你只能源代码跨平台,执行文件也想跨平台就只能用 java 了。

C 语言也是这个道理。 

如果你要作界面,还要跨平台, 源码级别的跨平台,

推荐用 wxWidgets,自己百度一下就知道了。


答案2:

C/C++ 是一次编写 到处编译运行

源码可以到处编译运行而已 

不过你要注意源码里是否有平台特性的东西 

.exe 文件只能在 WIN 下跑...

编译器 用 gnu 的 gcc 吧



原文地址:https://www.cnblogs.com/java20130723/p/3212051.html