一尘不染

在Linux中相当于Win32 API?

linux

我不想知道Windows和Linux中的API函数之间是否存在一一对应的关系,也不想知道每个API函数。

我只想了解两点基本知识:

  1. 我想了解为什么Qt平台独立
  2. 我想知道我应该在Linux中使用什么API来移植使用Win32 API编程的应用程序,或者换句话说,移植到Win32 API级别。

我知道这不切实际,但我想知道这种等效性。


阅读 798

收藏
2020-06-07

共1个答案

一尘不染

您需要了解什么是系统调用。在Linux上,它们是最低的用户土地API(相比之下,Win32
API
可能将真实的内核syscall与某些库函数libc混合在一起。在Linux上也是如此。)fork(2)execve(2)open(2)pipe(2)mmap(2)read(2)poll(2)close(2)dup2(2)sigaction(2)是重要的系统调用(但其中大约有300个)。

不要期望Linux上可以使用每种Windows功能(反之亦然)。甚至不要想到这样的等同物。在Linux上获得不同的心态。(特别是,进程在Linux和Windows上是非常不同的)。

不要忘记Linux是 免费软件 ,您可以深入研究Linux上使用的每个功能的源代码。阅读,搜索,改进.....

首先阅读intro(2)手册页,以及其他几个手册页(特别是syscalls(2)intro(3)等…)。另请阅读例如Advanced Linux
Programming
Advanced Unix
Programming

一些库尝试排除并提供Posix(例如Linux)和Windows的通用抽象。特别是Qt(以及Gtk)。

如果您对图形界面感兴趣,请了解X11的重要作用(请注意,X11服务器离屏幕和键盘最近;大多数图形应用程序都是X11客户端)。在2016年,X11往往会被Wayland取代(但如果您针对Qt或GTK进行编码,您将不会注意到实现“详细信息”-一个非常重要的实现)

如果您仅使用Qt调用(未记录为特定于Linux或Windows的代码)以及标准C ++函数编写应用程序,则应将其从Linux移植到Windows,反之亦然。

2020-06-07