将Windows应用程序移植到Linux

时间:2012-05-20 15:05:48

标签: linux porting freepascal

我有一个需要在Linux上移植的应用程序。我正在考虑使用Free Pascal,问题是应用程序使用Windows API来执行串口通信等任务...是否有一个用于linux用户的msdn或一本书,涵盖了如果有apis,linux如何工作。

我很困惑。

5 个答案:

答案 0 :(得分:5)

嗯,这是很可惜,但如果你在很Windows的dependend码(不依赖VCL!),那么很可能它会以更快的速度写从一开始而不是将它移植应用程序。

但如果它只是串口问题,那么试试多平台SynaSer库,在这里找到它:http://synapse.ararat.cz

希望这有帮助:)

答案 1 :(得分:3)

罗伯特·洛夫(Robert Love)有一本关于Linux系统编程的书 - 它将涵盖这个领域,爱的书籍通常都很好,所以值得一看。

从你的问题来看并不完全清楚,但是如果你担心Windows应用程序中有硬件控制功能的特定调用会使端口难以移植,那么我认为这是一种错位的恐惧。 Windows和Linux的运行原则是应用程序级程序员应远离硬件,并且所有应由操作系统内核处理,并且只能通过系统调用访问应用程序。由于不同操作系统的内核面临来自用户/应用程序的类似需求,因此它们往往具有执行相同类型的系统调用。有必要将系统调用相互匹配,但我没有理由认为这是不可能的。

可能更麻烦的是,您的Windows应用程序可能严重依赖Windows执行程序的窗口代码/ API。再次找到代码的类似物并非不可能,但可能会更复杂,例如在Linux中,这些东西通常根本不在内核中处理(与Windows不同)。

但话说回来,您的代码可能会像Qt这样的便携式工具包/库编写,这会让事情变得更容易。

祝你好运。

答案 2 :(得分:1)

如果程序包含GUI代码,你必须使用像GTK / XLIB这样的linux库来创建窗口,表单,按钮等......

Windows特定的函数(如EnterCriticalSection,WaitForSingleObject或_beginthreadex)必须替换为等效的linux api函数(可在此处找到一个很好的教程: “www.ibm.com/developerworks/systems/library/es-MigratingWin32toLinux.html”)或者您可以使用w2lplwine

等库

答案 3 :(得分:0)

我在http://www.adontec.com/windows-to-linux-port-library.htm

找到的这类问题的有用库

答案 4 :(得分:0)

我在使用WINE方面有很棒的经历。 (https://www.winehq.org/) 你根本没有真正移植你的应用程序。您只需确保它不违反WINE的一些基本约束,并按原样运行它。 WINE(虽然它说不是)是Windows API的模拟器,只会为你做翻译。它对API的覆盖范围非常完整。