我有一个需要在 Linux 上移植的应用程序。我正在考虑使用 Free Pascal,问题是应用程序使用 Windows API 来执行诸如串行端口通信等任务......是否有适用于 linux 用户的 msdn,或者如果有 api,是否有一本介绍 linux 如何在内部工作的书。
我很困扰。
我有一个需要在 Linux 上移植的应用程序。我正在考虑使用 Free Pascal,问题是应用程序使用 Windows API 来执行诸如串行端口通信等任务......是否有适用于 linux 用户的 msdn,或者如果有 api,是否有一本介绍 linux 如何在内部工作的书。
我很困扰。
好吧,很遗憾地说,但是如果您的代码非常依赖于 Windows(不依赖于 VCL!),那么从一开始就编写应用程序而不是移植它可能会更快。
但如果只是串口问题,那么试试多平台 SynaSer 库,在这里找到它:http: //synapse.ararat.cz。
希望这有帮助:)
Robert Love 有一本关于 Linux 系统编程的书 - 将涵盖该领域,而且 Love 的书通常都不错,因此值得一看。
从您的问题中并不完全清楚,但如果您担心 Windows 应用程序中对硬件控制功能的特定调用使其难以移植,我建议这是一种错位的恐惧。Windows 和 Linux 的运行原则是应用程序级程序员应该远离硬件,所有这些都应该由操作系统内核处理,并且只能通过系统调用被应用程序访问。由于不同操作系统的内核面临来自用户/应用程序的相似需求,它们往往具有执行相同类型事情的系统调用。有必要将系统调用相互匹配,但我看不出为什么这是不可能的。
可能更麻烦的是您的 Windows 应用程序可能严重依赖 Windows 执行程序的窗口代码/API。再次为您的代码找到类似物并非不可能,但可能会更复杂一些,例如在 Linux 中,这些东西通常根本不在内核中处理(与 Windows 不同)。
但是话又说回来,您的代码可能是针对像 Qt 这样的可移植工具包/库编写的,这会使事情变得容易得多。
无论如何祝你好运。
仅使用 WINE,我就获得了很棒的体验。( https://www.winehq.org/ ) 你根本没有真正移植你的应用程序。您只需确保它不违反 WINE 的一些基本约束并按原样运行它。WINE(虽然据说不是)是 Windows API 的模拟器,只会为您进行翻译。它对 API 的覆盖非常完整。