我正在从Windows编程(通过Windows编程我的意思是使用Windows API
)到Linux编程。
对于编程Windows,我们有的选项是Win32API(MFC只是一个相同的C ++包装)。
我想知道是否有像直接暴露给程序员的Linux API
(相当于WINAPI)? 我在哪里可以find参考?
用我对POSIX库的一点知识,我发现它包装了 Linux API
一部分 。 但是创buildGUI应用程序呢? POSIX不提供这一点。 我知道有很多像GTK,Qt等第三方Widget工具包。但我不想使用封装Linux API的库。 我想学习使用“核心Linux API”。
如果有什么我应该知道的,请告知。 任何熟悉Windows和Linux编程的程序员,请映射Linux世界的术语,以便我可以快速移动。
任何资源(书籍,教程, 参考 ),高度赞赏。
我想你正在寻找一些不完全存在的东西。 与Win32 API不同,没有用于执行GUI应用程序的“Linux API”。 你可以得到最接近的就是X协议本身,这是一个非常低层次的GUI(比Win32 GDI更详细和古老)。 这就是为什么存在隐藏X协议细节的包装器,比如GTK和Qt。
X协议适用于使用XLib的 C程序。
你必须明白的是,Linux对于其中包含的内容来说是非常光明的。 “核心”Linux API是POSIX和glibc。 Linux默认不是图形的,所以没有核心图形库。 真的,Windows可以被剥离到没有图形也没有像GDI那样的win32 API的一部分。 这你必须明白。 与Windows相比,Linux非常轻量级。
对于Linux,有两个主要的图形工具包,GTK和Qt。 我自己更喜欢GTK,但我会研究两个。 还要注意,GTK和Qt存在于Windows中,因为它们只是包装器。 如果你看看xterm
的X协议代码,你会明白为什么没有人试图在其上创建图形应用程序。
哦,SDL也是相当不错的,它非常光亮,但是如果你只是需要一个窗口的帧缓冲,这是很好的。 它可以在Linux和Windows之间移植,而且非常容易学习。 但它只会拉伸到目前为止..
我强烈建议看一下QT / C ++ UI框架 ,它可以说是任何平台上最全面的UI工具包。
我们正在使用它开发在Windows,OSX和Linux上运行的跨平台应用程序。
它也运行在诺基亚的智能手机操作系统Maemo上 ,该系统最近与英特尔的Moblin Linux操作系统(现在称为MeeGo)合并在一起。
Linux和win并不像看起来那么不同。
在这两个系统上都存在一个不是图形的内核。
这只是微软不记录这个内核,并发布引用各种不同组件的API。
在Unix上,它更透明。 确实有一个(非GUI)内核API,它已经发布。 然后,有些服务可以运行在此之上,可选地,它们的接口将被发布,而不会尝试将它们合并到一个实际上不存在的虚构层中。
所以,最低的GUI级别是X Window System ,它有一个叫做Xlib的最低级别的库。 正如你所指出的那样,有各种各样的库在这个库上运行。
这听起来很疯狂,因为你正在问C ++和C(以及“核心Linux API”)等“严重”的东西,但是你可能要考虑用别的东西来构建。 例如:
还有许多其他的可能性,其中一些可以让你一次在多个平台上工作。
对不起,如果这个答案不是你想要的。 Linux上的“真实”答案是“挑选一个工具包”,这也是没有答案的:)
看看开罗 。 这与GDI +大致相似,并且在Linux或Firefox(Eclipse)(SWT)等几个可用的GUI程序中都有。 它将大部分的nat和古老的Linux东西包装成一个很好的API,可以在大多数Linux上运行,而不会像GTK或QT那样锁定整个子系统。
还有两个不同的桌面平台的文档:Gnome和KDE可能会帮助你走下坡路。