2013-07-26 57 views
0

我目前不得不将用C编写的Windows系统(和MinGW编译器)项目改写为Linux系统。 我已阅读有关交叉编译,但它似乎没有足够的帮助我的情况,因为我正在使用64位Windows机器,而我的Linux系统是32位。 另外,我在我的项目中有很多DLL调用,因为这些DLL不一定在Linux上存在,所以会造成麻烦。 我想知道是否有人在StackOverlfow社区知道我如何解决(或至少缓解)我的问题。 预先感谢您将Windows项目调整到Linux系统

+0

你必须经过**很多**重构**。跨平台应用程序必须从**开始**时刻记住这一点(否则您将只能使用非常少的代码)。如果你没有......那么你现在可以做的不多,**耐心**和**重写,以隔离系统特定的代码**在单独的库/模块中(您可以简单地为每个系统重写)。使用**跨平台库**为您提供一切(例如用于界面的QT,提升许多其他事物等等)。 –

+0

哦,我刚才看到你用** linux-device-driver **标记了你的问题。如果你必须重写一个**设备驱动程序**然后**忘记**来移植你的大部分代码,在这个级别几乎所有的东西都不一样(只有你可以保存的东西是_algorithms_,但通常它们与特定系统称你无法提取它们,并且你不会支付抽象的性能影响)。 –

+0

这太宽泛了。显然你需要修改你的代码,但只有你可以计算出需要完成的工作。 –

回答

3

如果您尝试将Windows设备驱动程序移植到Linux,那么您最好还是扔掉代码。 Linux内核与Windows内核的工作方式非常不同。由于在内核编程中基本上没有抽象,所以即使在Windows上使用Linux工具链,也无法制作跨平台驱动程序。

Linux和Windows有完全不同的内核设计,这意味着您为其中一个编写的代码根本无法工作。在Windows上尝试编译Linux用户空间程序已经很困难,更不用说试图将Windows驱动程序完全移植到Linux上。

0

谢谢大家为你解答。实际上,我认为这实际上不可能改变代码(更重要的是,它甚至不仅仅是一个应用程序,而是针对特定电子板的特定驱动器的几个.c和.h文件)。因此,我现在开始在Windows操作系统上测试代码,然后我会看看我要用我的Linux系统做什么...