Briefly, on my cygwin, `pkg-config --libs gtk+-2.0' would output:
0.17: -Wl,--export-dynamic -lgtk-x11-2.0
0.15: -Wl,--export-dynamic -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lm -lpangoxft-1.0 -lpangox-1.0 -lpango-1.0 -lgobject-2.0 -lgmodule-2.0 -lglib-2.0 -lintl -liconv
I think the latter is right. Perhaps cygwin port forgot to specify '--enable-indirect-deps' option while building.
这 几日在公司做设计,需要划UML图,于是就想用dia,装了个windows版本,谁知道老崩溃,于是想念起cygwin版本来。原来在cygnome2 已经做过移植,但跟现在cygwin自己的gtk2用了不同的prefix,就重新编译一下吧。 因为在公司空闲时间不多,于是就在家里先搞好了build script和cygwin patch打算然后重新在公司直接编译一遍。
谁 知道在家里弄好的patch到了公司就不用了,configure的时候报告gtk+-2.0不存在,检查config.log,发现是测试gtk+- 2.0时没有g_xxx等函数的定义,也就是说缺少-lglib-2.0。手工添加了一把,到了生成lib/libdia.la时还是出错,这回说是没有 gdk_xxx的定义。
觉得有问题,回头再查看config.log, 看到pkgconfig --libs gtk+-2.0的时候就只输出了-Wl,--export-dynamic -lgtk-x11-2.0. 怎么回事?gtk+-2.0依赖于gdk,glib等,它应该自动将它们的libs也提取出来啊,总不能让我在应用程序中自己来调用吧(比如我怎么知道该 添加gdk-x11还是gdk-win32,我怎么知道它有没有使用libintl?)
回到家一试验,果然家里的pkgconfig输出的 是正确的(有-lpango-1.0 -lglib-2.0.....)。但pkgconfig是个小程序,好像没有什么配置上的不同导致这个问题啊?难道是版本问题?一检查,家里用的还是 0.15版本,而公司里用的是较新的0.17。奇怪,老版本居然没问题,而新版本有。
没有评论:
发表评论