linux交叉编译静态,用Ubuntu交叉编译静态的GTK库

GTK这个工程很大,编译起来很不方便,特别是静态编译.

在Windows下用Mingw和msys编译死慢死慢.(用bash.exe进行configure太慢了,还时不时跳个错误出来..)

所以我用Ubuntu交叉编译.configure相当的快.

jhbuild本为gnome这个庞大工程而生,编译GTK这方面也许只有它最方便了.用jhbuild的好处是不用自己来处理GTK的依赖关系了,编译可以一气呵成.

我编译的是GTK 2.16,我按这个页面的提示进行编译:http://live.gnome.org/GTK+/Win32/CrossCompilingJhbuild

GTK3都出来了怎么还编译2.16呢,其实3还不稳定,2.16是最稳定版本.而且跨平台编译的工程包只有2.16的.

我的系统是Ubuntu 11.04,编译安装在$home下.

首先安装mingw,可以直接安装:

sudo apt-get install mingw32

系统会自动处理依赖关系,自动下载另外两个包:mingw32-binutils  mingw32-runtime

然后安装jhbuild,其实系统也自带这个源,可以直接

sudo apt-get install jhbuild

注意它的网页上提醒是源码安装,会很麻烦的.

然后运行jhbuild,提示没有 $home/.jhbuildrc这个文件,新建一个就行,这个文件可以只有两行,主要是用来配置的.

checkoutroot = os.path.expanduser('~/checkout/gnome')

prefix = '/home/ww/gtkout'

#这是我自己设置的目录,这个文件其实也没有什么用

tar xzf jhbuild.mingw.gtk-2.16.tgz

cd jhbuild.mingw.gtk-2.16

./cross-build-gtk-rls

它会自动下载zlib,png,glib,cairo,xml2,jpeg,iconv,pixman,atk,freetype,tiff,gtk等等.

很方便,比我以前自己乱编译好多了.

注意了zlib,gettext,和gtk-io都有补丁的!我想这也是我以前编译不成功的关键,(以前编译GTK库时压根没有在意补丁)

看一下gtk+-win32.jhbuildrc这个文件,就会发现有很多是disable的,如:--disable-gtk-doc

所以编译起来很快,编译用时仅仅十来分钟.(但是排错用了很久)

它用wget下载,这种下载很慢,其实也可以单独下载,看gtk+-win32.moduleset这个文件

找好版本号一个一个的下载,再把文件放到jhbuild.mingw.gtk-2.16/checkout.rls下就行了.注意版本一定要一样

GTK 2.16确实老了!

在下载过程中它会到zlib.net下载zlib 1.2.5.这个页面好像被墙了或者已经over了,下载不了.百度吧!

在下载过程中它还会下载pixman 0.19.2但是这个好像是废弃版本,下载页面已经把它给删了.不过可以用高版本代替.

直接复制pixman这个包还不行,因为配置文件带有md5验证(防止下载时出错的)

下载pixman 0.20.2(百度).再用系统自带的命令得到md5:

md5sum pixman-0.20.2

然后到$home/jhbuild.mingw.gtk-2.16/gtk+-win32.moduleset改md5值和文件名,(最好不要改version="0.19.2"这个)

类似这样的代码:

以前我是从头编译的,编译freetype,fontconfig,gettext,glib,cairo,pango.....

编译进程中还要注意环境变量还要设置 pkg-config路径和要一些麻烦的错误.一个编译不成功就不可能进行下一个.

单是理清它的依赖关系就头晕了......

所以用jhbuild还是很方便的.jhbuild本为gnome而生,编译GTK这方面也许只有它最方便了

如果以上编译成功了,就说明没有什么错误了.....(我编译过程中最后的demo没有完成)

现在看看怎么静态编译.

看看gtk+-win32.jhbuildrc

这个文件里面有这样一句:

autogenargs += ' --disable-static '

也就是它只编译动态库,改下就行了:

autogenargs += ' --enable-static --disable-shared'

但是编译会出错!要把GTK工程清理了重头编译才行(反正我编译过程中出错了...)

编译很顺利,但是到了GTK+也就是最后工程卡住了.....

glib,cairo,pango都成功了...就是GTK卡住了,说没有找到pango......

以后再考虑吧..

我现在在想可不可以替换gtk+-win32.moduleset这个文件里的内容,来编译GTK3!像替换pixman一样一个一个的替换嘛....

最麻烦的是补丁问题.....0b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值