在 Python 中封装 GObject
2007-03-29 12:14:54 来源:WEB开发网核心提示: 尽管名称源可能存在混淆,但该 C 代码非常简单,在 Python 中封装 GObject(6),它初始化 GObject 和 trayicon 模块,然后向 Python 注册这些类,如果它没有编译和链接,请仔细检查这些阶段,现在我们有了所有代码块,就可以生成共享对象了
尽管名称源可能存在混淆,但该 C 代码非常简单。它初始化 GObject 和 trayicon 模块,然后向 Python 注册这些类。
现在我们有了所有代码块,就可以生成共享对象了。将以下内容添加到 makefile:
清单 4. makefile 附加代码部分
CFLAGS = 'pkg-config --cflags gtk+-2.0 pygtk-2.0' -I/usr/include/python2.2/ -I.
LDFLAGS = 'pkg-config --libs gtk+-2.0 pygtk-2.0'
trayicon.so: trayicon.o eggtrayicon.o trayiconmodule.o
$(CC) $(LDFLAGS) -shared $^ -o $@
让我们再次逐行仔细检查:
CFLAGS = 'pkg-config --cflags gtk+-2.0 pygtk-2.0' -I/usr/include/python2.2/ -I.
该行定义 C 编译标志。我们使用 pkg-config 来获取 GTK+ 和 PyGTK 的 include 路径。
LDFLAGS = 'pkg-config --libs gtk+-2.0 pygtk-2.0'
该行定义链接程序标志。再次使用 pkg-config 来获取正确的库路径。
trayicon.so: trayicon.o eggtrayicon.o trayiconmodule.o
共享对象是根据生成的代码、我们刚才编写的模块代码以及 EggTrayIcon 的实现构造的。隐式规则根据我们创建的 .c 文件构建 .o 文件。
$(CC) $(LDFLAGS) -shared $^ -o $@
这里我们构建最终的共享库。
现在运行 make trayicon.so 应该会根据定义生成 C 代码,编译三个 C 文件,最后将它们全都链接在一起。做得不错 — 我们已经构建了第一个本机 Python 模块。如果它没有编译和链接,请仔细检查这些阶段,并确保早先没有出现会引起稍后出错的警告。
更多精彩
赞助商链接