【问题标题】:Glade and static linkingGlade 和静态链接
【发布时间】:2010-12-29 18:28:41
【问题描述】:

如果我在 FreeBSD 8 下静态链接 GTK+ 程序,gtk_builder_add_from_file() 会突然返回错误:

无效的对象类型“GtkWindow”

如何解决这个问题?使用动态链接一切正常。

更新:链接由:

cc -o foobar foo.o bar.o main.o -Wall -pedantic -std=c99 D_THREAD_SAFE -DORBIT2=1 -D_REENTRANT -I/usr/local/include/gtk-2.0 -I/usr/local/lib/gtk -2.0/include -I/usr/local/include/atk-1.0 -I/usr/local/include/cairo -I/usr/local/include/pango-1.0 -I/usr/local/include -I/usr /local/include/glib-2.0 -I/usr/local/lib/glib-2.0/include -I/usr/local/include/pixman-1 -I/usr/local/include/freetype2 -I/usr/local /include/gconf/2 -I/usr/local/include/orbit-2.0 -I/usr/local/include/dbus-1.0 -I/usr/local/include/dbus-1.0/include -DGTK_DISABLE_DEPRECATED=1 -DGDK_DISABLE_DEPRECATED -DGDK_PIXBUF_DISABLE_DEPRECATED -DG_DISABLE_DEPRECATED=1 -DGTK_MULTIHEAD_SAFE=1 -export-dynamic -static -pthread -L/usr/local/lib -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lpangocairo-1.0 -lgio-2.0 -lXinerama -lXi -lXcursor -lXcomposite -lXdamage -lpangoft2-1.0 -lXext -lXfixes -lcairo -lpixman-1 -lpng -lxcb-render-util -lXrender -lxcb-render -lX11 -lxcb -lXau -lXdmcp -lpango-1.0 -lfontconfig -lexpat -lfreetype -lz -lgconf-2 -lORBit-2 -lm -ldbus-1 -lgmodule-2.0 -lgthread-2.0 -lgobject-2.0 -lglib-2.0 -liconv -lintl -lpcre

或者换句话说,在 Makefile 我有:

CFLAGS := -Wall -pedantic -std=c99 LDFLAGS := -export-动态 -static CFLAGS += $(shell pkg-config --cflags gtk+-2.0 gconf-2.0) \ -DGTK_DISABLE_DEPRECATED=1 -DGDK_DISABLE_DEPRECATED \ -DGDK_PIXBUF_DISABLE_DEPRECATED -DG_DISABLE_DEPRECATED=1\ -DGTK_MULTIHEAD_SAFE=1 LDFLAGS += $(shell pkg-config --libs --static gtk+-2.0 gconf-2.0) -lintl -lpcre ... $(NAME): $(OBJ) cc -o $@ $^ $(CFLAGS) $(LDFLAGS)

【问题讨论】:

    标签: c gtk static-linking gtkbuilder


    【解决方案1】:

    首先,不支持将 gtk+ 与应用程序静态链接。你可能会遇到很多棘手的问题。

    GtkBuilder 需要能够dlopen 您的库,您需要确保相关库中的所有符号也由您的二进制文件导出。在 ELF 系统上,您必须将 -export-dynamic/-Wl,-export-dynamic 传递给链接器/gcc。

    【讨论】:

      猜你喜欢
      • 2013-06-04
      • 1970-01-01
      • 2011-05-08
      • 2010-09-15
      • 2012-05-14
      • 1970-01-01
      • 1970-01-01
      • 2017-06-13
      • 1970-01-01
      相关资源
      最近更新 更多