分页: 1 / 1

发布一个win32平台上的GTK静态库

发表于 : 2011-11-19 11:46
hangyu
我花费两个星期编译了GTK等相关库的所有静态库。现在奉献给有需要的人。(18M)
http://code.google.com/p/static-gtk2-mingw32/
http://static-gtk2-mingw32.googlecode.c ... 32-0.1.zip
包含了一个静态的pkg-config
由于静态编译,bin目录太大就没有把gettext相关的打包。

这个库最大的特点是链接完成就是默认的MS-Windows风格主题,不需要 etc, share 等目录就可以正常运行(有主题)。
链接此库的生成exe程序最少7.4M,如果不内置stock-icons中的图标大约是7M

是单独一个程序,不需要dll

修改pango-utils.c中的默认pango aliases.添加了微软雅黑 = "微软雅黑,microsoft yahei", 宋体 = "宋体,simsun"
所以当系统使用 微软雅黑 或者 宋体 的时候GTK程序就不或使用难看的Arial Unicode MS字体。
(解决类似Pango-WARNING : couldn't load font "微软雅黑 9"的错误)
pango 不认中文字体名??

以下均为静态编译
----------------------------
GLib 2.28.1
ATK 1.32.0
Pango 1.28.3
gdk-pixbuf 2.22.1
GTK+ 2.24.0

zlib 1.2.5
cairo 1.10.2
libpng 1.4.3
Freetype 2.4.2
Fontconfig 2.8.0
expat 2.0.1
gettext 0.18.1.1
pixman 0.18.4
jasper-1.900.1
jpegsr6
tiff-3.8.2
iconv
----------------------------

下一步我希望多加几个主题引擎。

如果对大家有用,别忘了留个言啊。

Re: 发布一个win32平台上的GTK静态库

发表于 : 2011-11-21 12:05
brglng
赞一个!
有空试试~
win32上静态库还是很有用的。
希望能有更多人一起维护这个项目。

Re: 发布一个win32平台上的GTK静态库

发表于 : 2011-11-22 22:05
tangboyun
其实楼主应该先尝试使用statifier的。即使最后不准备使用它,你也应该先读下相关的文档。单独编译一个静态库来发布的缺点在于,对于编译使用的环境一样是有依赖的。最后终究会变成,你要把整个编译环境打包。。。。而这就是statifier做的。
Statifier create from dynamically linked executables and all it's libraries one file. This file can be copied and run on another machine without need to drag all it's libraries. Dynamically linked executables are smaller then statically linked.

Re: 发布一个win32平台上的GTK静态库

发表于 : 2011-11-23 8:30
hangyu
tangboyun,
你说的是zlib 1.2.5
cairo 1.10.2
libpng 1.4.3
Freetype 2.4.2
Fontconfig 2.8.0
expat 2.0.1
gettext 0.18.1.1
pixman 0.18.4
jasper-1.900.1
jpegsr6
tiff-3.8.2
iconv
。。。吗?
这些都已经包含了。也都是静态库。

还是不同版本GCC造成的问题?
我用gcc-4.5编译后,用4.6的编gtk程序没问题就发布了。

Re: 发布一个win32平台上的GTK静态库

发表于 : 2011-11-23 8:34
leeaman
也就gimp,没有什么别的gtk程序要用的,gimp都没装了现在

Re: 发布一个win32平台上的GTK静态库

发表于 : 2011-11-26 0:02
wosuopu
正需要,有空试试~~

Re: 发布一个win32平台上的GTK静态库

发表于 : 2011-11-26 11:15
wosuopu
为什么我这编译时出错啊,我用的是MinGW-gcc440来编译。

E:\GTK\2.box_table>mingw32-gcc -o mybox.exe mybox.c -LE:/Dev-Cpp/gtk+-2.0/lib -L
/gtk-dev/lib -lgtk-win32-2.0 -lgdk-win32-2.0 -limm32 -lshell32 -luuid -latk-1.0
-lpangocairo-1.0 -lgio-2.0 -lshlwapi -ldnsapi -lgdk_pixbuf-2.0 -ltiff -ljpeg -lj
asper -lpangoft2-1.0 -lpangowin32-1.0 -lusp10 -lfontconfig -lexpat -lpango-1.0 -
lcairo -lpixman-1 -lfreetype -lmsimg32 -lgdi32 -lpng -lz -lm -lgobject-2.0 -lgmo
dule-2.0 -lgthread-2.0 -lglib-2.0 -lintl -liconv -lws2_32 -lole32 -mms-bitfields
-IE:/Dev-Cpp/gtk+-2.0/include/gtk-2.0 -IE:/Dev-Cpp/gtk+-2.0/lib/gtk-2.0/include
-IE:/Dev-Cpp/gtk+-2.0/include/atk-1.0 -IE:/Dev-Cpp/gtk+-2.0/include/cairo -IE:/
Dev-Cpp/gtk+-2.0/include/gdk-pixbuf-2.0 -IE:/Dev-Cpp/gtk+-2.0/include/pango-1.0
-IE:/Dev-Cpp/gtk+-2.0/include/glib-2.0 -IE:/Dev-Cpp/gtk+-2.0/lib/glib-2.0/includ
e -IE:/Dev-Cpp/gtk+-2.0/include/pixman-1 -IE:/Dev-Cpp/gtk+-2.0/include -IE:/Dev-
Cpp/gtk+-2.0/include/freetype2 -I/gtk-dev/include/libpng14
Warning: .drectve `-aligncomm:_event_poll_fd,2' unrecognized
Warning: .drectve `-aligncomm:__gdk_input_devices,2 ' unrecognized
Warning: .drectve `-aligncomm:__gdk_input_windows,2 ' unrecognized
Warning: .drectve `-aligncomm:__gdk_input_ignore_core,2' unrecognized
Warning: .drectve `-aligncomm:__gdk_num_monitors,2 ' unrecognized
Warning: .drectve `-aligncomm:__gdk_offset_x,2 ' unrecognized
Warning: .drectve `-aligncomm:__gdk_offset_y,2 ' unrecognized
Warning: .drectve `-aligncomm:__gdk_display_hdc,2 ' unrecognized
Warning: .drectve `-aligncomm:__gdk_dll_hinstance,2 ' unrecognized
Warning: .drectve `-aligncomm:__gdk_app_hmodule,2 ' unrecognized
Warning: .drectve `-aligncomm:__gdk_input_locale,2 ' unrecognized
Warning: .drectve `-aligncomm:__gdk_input_locale_is_ime,2 ' unrecognized
Warning: .drectve `-aligncomm:__gdk_input_codepage,2 ' unrecognized
Warning: .drectve `-aligncomm:__gdk_selection,2 ' unrecognized
Warning: .drectve `-aligncomm:__wm_transient_for,2 ' unrecognized
Warning: .drectve `-aligncomm:__targets,2 ' unrecognized
Warning: .drectve `-aligncomm:__delete,2 ' unrecognized
Warning: .drectve `-aligncomm:__save_targets,2 ' unrecognized
Warning: .drectve `-aligncomm:__utf8_string,2 ' unrecognized
Warning: .drectve `-aligncomm:__text,2 ' unrecognized
Warning: .drectve `-aligncomm:__compound_text,2 ' unrecognized
Warning: .drectve `-aligncomm:__text_uri_list,2 ' unrecognized
Warning: .drectve `-aligncomm:__text_html,2 ' unrecognized
Warning: .drectve `-aligncomm:__image_png,2 ' unrecognized
Warning: .drectve `-aligncomm:__image_jpeg,2 ' unrecognized
Warning: .drectve `-aligncomm:__image_bmp,2 ' unrecognized
Warning: .drectve `-aligncomm:__image_gif,2 ' unrecognized
Warning: .drectve `-aligncomm:__local_dnd,2 ' unrecognized
Warning: .drectve `-aligncomm:__gdk_win32_dropfiles,2 ' unrecognized
Warning: .drectve `-aligncomm:__gdk_ole2_dnd,2 ' unrecognized
Warning: .drectve `-aligncomm:__cf_png,2 ' unrecognized
Warning: .drectve `-aligncomm:__cf_jfif,2 ' unrecognized
Warning: .drectve `-aligncomm:__cf_gif,2 ' unrecognized
Warning: .drectve `-aligncomm:__cf_url,2 ' unrecognized
Warning: .drectve `-aligncomm:__cf_html_format,2 ' unrecognized
Warning: .drectve `-aligncomm:__cf_text_html,2' unrecognized
Warning: .drectve `-aligncomm:__g_resolver_addrinfo_hints,5' unrecognized
Warning: .drectve `-aligncomm:_jpc_zcctxnolut,5 ' unrecognized
Warning: .drectve `-aligncomm:_jpc_spblut,5 ' unrecognized
Warning: .drectve `-aligncomm:_jpc_scctxnolut,5 ' unrecognized
Warning: .drectve `-aligncomm:_jpc_magctxnolut,5 ' unrecognized
Warning: .drectve `-aligncomm:_jpc_refnmsedec,5 ' unrecognized
Warning: .drectve `-aligncomm:_jpc_signmsedec,5 ' unrecognized
Warning: .drectve `-aligncomm:_jpc_refnmsedec0,5 ' unrecognized
Warning: .drectve `-aligncomm:_jpc_signmsedec0,5 ' unrecognized
Warning: .drectve `-aligncomm:_jpc_mqctxs,5' unrecognized
Warning: .drectve `-aligncomm:__pango_win32_hdc,2 ' unrecognized
Warning: .drectve `-aligncomm:__pango_win32_os_version_info,5' unrecognized
collect2: ld 杩斿洖 5

E:\GTK\2.box_table>

好像是ld链接时出错了
gtk.JPG

Re: 发布一个win32平台上的GTK静态库

发表于 : 2011-11-26 12:28
hangyu
wosuopu,

加上 -mms-bitfields 选项试试,编译gtk库的时候就用到这个选项,否则就是生成了程序也会报错。Gtk-Error **:Incompatible Build!

Re: 发布一个win32平台上的GTK静态库

发表于 : 2011-11-26 17:24
wosuopu
感谢分享,现在可以用了。
之前用的mingw的gcc是4.4.0版本的,编译就出错了,现在换了个高版本的可以成功编译了。
这个静态库好大哦,随便一个简单的程序就是25M以上。

Re: 发布一个win32平台上的GTK静态库

发表于 : 2011-11-26 21:15
hangyu
所有的都静态了,没办法啊。
strip一下可以减到7M。

4.4.0版本真的不能用吗?
我试了一下 gcc 3.4.5 能用。回头我在下试一试4.4的。