Windows与Linux编译器的区别

  移植工作开始后的第一步就是在目标平台Linux上进行编译,并链接源代码。由于需要移植的软件通常并未在Linux平台上编译过,编译的过程可能会遇到很大的困难。一般情况下,由类型声明引起的编译错误是比较容易修复的。比如Microsoft C/C++的头文件使用__declspec( dllimport/dllexport )来输入和输出DLL函数,在Linux上,把函数声明成extern “C”,或者再结合使用DEF文件,使用相应的链接命令就可以解决这些问题。但困难的地方在于编译器之间存在差异的部分,同时这也是可能引起很多运行时问题的重要因素,读者有必要在开始移植之前就充分了解。在此讲述一些容易被忽略而且后果比较严重的方面。

  以Visual C++ 2003和GCC 4.1.0为例。前者是Windows平台的主流编译器,兼容性良好,但是对C++标准的遵循并不严格。这意味着即使开发者写出不太符合标准的程序,编译器也可能能容忍。相反的是,GCC对标准的遵循相对严格得多,这样很容易造成在Windows运行良好的程序,在Linux上却引起意想不到的编译甚至运行时错误。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wzwfyx.html