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

软件和网站开发以及相关技术探讨
回复
hangyu
帖子: 26
注册时间: 2007-07-21 14:35

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

#1

帖子 hangyu » 2011-11-19 11:46

我花费两个星期编译了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
----------------------------

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

如果对大家有用,别忘了留个言啊。
上次由 hangyu 在 2011-11-23 8:33,总共编辑 1 次。
brglng
帖子: 198
注册时间: 2008-02-05 20:26

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

#2

帖子 brglng » 2011-11-21 12:05

赞一个!
有空试试~
win32上静态库还是很有用的。
希望能有更多人一起维护这个项目。
头像
tangboyun
帖子: 701
注册时间: 2009-07-25 1:57
联系:

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

#3

帖子 tangboyun » 2011-11-22 22:05

其实楼主应该先尝试使用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.
https://github.com/tangboyun
http://tangboyun.is-programmer.com/
提问的智慧————Eric Steven Raymond
回答的智慧————Andrew Clarke
吾尝终日而思矣,不如须臾之所学也;吾尝跂而望矣,不如登高之博见也。
急急急标题什么的,最讨厌了!
急急复急急,急急何其多,我生待急急,万事急急急。
hangyu
帖子: 26
注册时间: 2007-07-21 14:35

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

#4

帖子 hangyu » 2011-11-23 8:30

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程序没问题就发布了。
头像
leeaman
帖子: 30702
注册时间: 2007-02-02 18:14
系统: debian sid

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

#5

帖子 leeaman » 2011-11-23 8:34

也就gimp,没有什么别的gtk程序要用的,gimp都没装了现在
醉了星星,醉月亮●●●●●The Long Way To Go(*^_^*)
wosuopu
帖子: 4
注册时间: 2008-09-06 19:01

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

#6

帖子 wosuopu » 2011-11-26 0:02

正需要,有空试试~~
wosuopu
帖子: 4
注册时间: 2008-09-06 19:01

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

#7

帖子 wosuopu » 2011-11-26 11:15

为什么我这编译时出错啊,我用的是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
hangyu
帖子: 26
注册时间: 2007-07-21 14:35

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

#8

帖子 hangyu » 2011-11-26 12:28

wosuopu,

加上 -mms-bitfields 选项试试,编译gtk库的时候就用到这个选项,否则就是生成了程序也会报错。Gtk-Error **:Incompatible Build!
附件
Error info
Error info
wosuopu
帖子: 4
注册时间: 2008-09-06 19:01

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

#9

帖子 wosuopu » 2011-11-26 17:24

感谢分享,现在可以用了。
之前用的mingw的gcc是4.4.0版本的,编译就出错了,现在换了个高版本的可以成功编译了。
这个静态库好大哦,随便一个简单的程序就是25M以上。
hangyu
帖子: 26
注册时间: 2007-07-21 14:35

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

#10

帖子 hangyu » 2011-11-26 21:15

所有的都静态了,没办法啊。
strip一下可以减到7M。

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