就像 Windows 的 API 在 kernel.dll、user32.dll 等中一样,GNOME API 是否存储在 *.so 文件中?
如果有,他们在哪里?我可以在我的程序中将它们用作共享库吗?
如果不是,它们是什么?
就像 Windows 的 API 在 kernel.dll、user32.dll 等中一样,GNOME API 是否存储在 *.so 文件中?
如果有,他们在哪里?我可以在我的程序中将它们用作共享库吗?
如果不是,它们是什么?
.so 是称为动态库的“共享对象”,不同于静态库的“.a”。我认为在 Windows 系统中只有 .dll (动态链接库)。
Gnome API,因为 gnome 只是一个桌面环境,它利用其他软件元素,如 Nautilus(它的窗口管理器)等。有可执行文件和库(我想混合在静态和动态之间。此外,它将使用其他库,如 libpng 或 libjpeg用于图像、用于声音等的 libalsa 以及用于 GUI 的 GTK(gnome 工具包)
最后,它们中的更多可能位于 /usr/lib /usr/share/lib /usr/X11/lib ... 和类似路径中
GNOME 只是一个桌面环境——它为您提供了管理桌面、在窗口管理器之上、在 X.org 之上管理窗口等的高级功能。
没有一组(单一且定义明确的)GNOME API:您使用来自各种项目的各种库。一般来说,GNOME 的东西使用 GTK+ 作为他们的图形库,加上许多其他的库,有些是 GNOME\GTK 特定的,而另一些则更通用。您可以在这里查看信息 [1]
在您的系统上,您会在某个位置的 .so 对象中找到它们的二进制文件(例如,在 /usr/lib、/usr/share/lib 等中)。
要在您的程序中使用它们,您必须#include
使用相应的头文件,例如#include <gtk/gtk.h>
使用 GTK 库(在许多发行版中默认情况下不安装头文件,例如在 Debian 和 Ubuntu 中,您必须lib{libraryname}-dev
使用 apt-get 下载软件包)。
要编译,您必须告诉链接器和编译器您要编译的库在哪里。为此,您可以使用pkg-config
[2] 为大多数库找到正确的 gcc-L
和-I
开关(或者您可以设置您的 IDE - 或指示您的 Makefile - 这样做)