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