标题: 解决在Solaris 11 (sunos 5.11)上不能编译php-gtk2
phpgtk
新手上路
Rank: 1



UID 1217
精华 0
积分 0
帖子 0
阅读权限 10
注册 2007-6-9
发表于 2007-6-18 20:49  资料  个人空间  短消息  加为好友 
解决在Solaris 11 (sunos 5.11)上不能编译php-gtk2

原文地址:http://bbs.phpres.com/viewthread.php?tid=1793


=============================================
#  E-mail : weij@mail.51.com
#  MSN : sunshinesun_9@163.com
#  Site: www.ikown.com
#  tonyvicky  2006-11-28
=============================================
解决在Solaris 11 (sunos 5.11)上不能编译php-gtk2
在Solaris上就连./buildconf都不能通过,主要原因是autoconf的问题
那么我就先到LINUX系统上进行./buildconf 和 ./configure,把生成的Makefile仔细的看了看,感觉没什么问题,把这个Makefile拿到了Solaris下,开始编译的时候开可以,到最后一步出错了,看了看,原因是Solaris的ld和Linux的ld不太一样,于是把Makefile的文件改了改,可以了,哈哈

安装前需要确定你已经安装了libiconv和autoconf
如果没有安装,可以去 http://www.sunfreeware.com下载
当然了,还要确定你是否设置好了开发环境,如果你是选择全部安装Solaris,那么你肯定有了开发环境
如果你已经安装了全部开发环境,但是还没有设置,请修改/etc/profile文件

tonyvicky@bash-3.00# gedit /etc/profile

在文件最后添加

PATH=/usr/sbin:/usr/ccs/bin:/sbin:/usr/sfw/bin:/usr/local/bin:$PATH
LD_LIBRARY_PATH=/usr/local/lib:/usr/sfw/lib:/usr/local/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH

然后重新登录系统,使环境变量生效

# bash
tonyvicky@bash-3.00# gunzip php-5.2.0.tar.gz
tonyvicky@bash-3.00# tar vxf php-5.2.0.tar
tonyvicky@bash-3.00# cd php-5.2.0
tonyvicky@bash-3.00# ./configure --prefix=/usr/local/php-gtk --disable-cgi
tonyvicky@bash-3.00# make
tonyvicky@bash-3.00# make install
tonyvicky@bash-3.00# cp php.ini-dist /usr/local/php/lib/php.ini
tonyvicky@bash-3.00# cd ..

安装PHP-GTK
下载经过修改的php-gtk2的压缩包 http://www.phpgtk.net/php-gtk-2.0.0alpha-solaris5.11.tar
这里所说的修改,并不是修改的源代码,只是修改了编译的Makefile
执行

tonyvicky@bash-3.00# tar vxf php-gtk-2.0.0alpha.tar
tonyvicky@bash-3.00# cd php-gtk-2.0.0alpha

修改Makefile文件的内容

tonyvicky@bash-3.00# gedit Makefile

/works/tools/php-gtk-2.0.0alpha 全部改成php-gtk源代码的目录
/usr/local/php-gtk 全部改成你PHP安装的目录

然后执行

tonyvicky@bash-3.00# make

当出现类似这样的错误时
ld: warning: option -o appears more than once, first setting taken
ld: fatal: file php_gtk2.so: open failed: No such file or directory
ld: fatal: File processing errors. No output written to .libs/php_gtk2.so
collect2: ld returned 1 exit status
*** Error code 1
make: Fatal error: Command failed for target `php_gtk2.la'

执行这个命令

gcc -shared  ./ext/gtk+/.libs/php_gtk+.o ext/gtk+/.libs/gen_atk.o ext/gtk+/.libs/gen_pango.o ext/gtk+/.libs/gen_gdk.o ext/gtk+/.libs/gen_gtk.o ext/gtk+/.libs/php_gdk.o ext/gtk+/.libs/php_gtk+_types.o ./ext/sourceview/.libs/php_sourceview.o ext/sourceview/.libs/gen_sourceview.o main/.libs/php_gtk.o main/.libs/phpg_support.o main/.libs/phpg_gtype.o main/.libs/phpg_exceptions.o main/.libs/php_gtk_util.o main/.libs/phpg_gvalue.o main/.libs/phpg_closure.o main/.libs/phpg_gboxed.o main/.libs/phpg_gpointer.o main/.libs/phpg_atom.o main/.libs/phpg_gobject.o main/.libs/php_gtk_ext.o  -lgtksourceview-1.0 -lgtk-x11-2.0 -lgnomeprint-2-2 -lz -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lm -lpangocairo-1.0 -lfontconfig -lXext -lXrender -lXi -lXrandr -lXfixes -lcairo -lX11 -lart_lgpl_2 -lxml2 -lpango-1.0 -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0  -Wl,-soname -Wl -o .libs/php_gtk2.so

这时候会在libs目录生成php_gtk2.so
我们把这个动态库复制到php安装的目录

tonyvicky@bash-3.00# mkdir /usr/local/php-gtk/lib/php/extensions/
tonyvicky@bash-3.00# cp libs/php_gtk2.so /usr/local/php-gtk/lib/php/extensions/

然后修改php.ini 使php_gtk2.so生效

tonyvicky@bash-3.00# gedit /usr/local/php-gtk/lib/php.ini



extension_dir = "./"

修改为

extension_dir = "/usr/local/php-gtk/lib/php/extensions/"

并且加一行

extension=php_gtk2.so

我们写一个test.php文件,测试一下phpgtk

<?php
//test.php
function delete_event()
{
    return false;
}
function destroy()
{
    Gtk::main_quit();
}
function hello()
{
    global    $window;
    print "Hello World!\n";
    $window->destroy();
}
$window = new GtkWindow();
$window->connect('destroy', 'destroy');
$window->connect('delete-event', 'delete_event');
$window->set_border_width(10);
$button = new GtkButton('Hello World!');
$button->connect('clicked', 'hello');
$tt = new GtkTooltips();
$tt->set_delay(200);
$tt->set_tip($button, 'Prints "Hello World!"', '');
$tt->enable();
$window->add($button);
$window->show_all();
Gtk::main();
?>



tonyvicky@bash-3.00# /usr/local/php-gtk/bin/php test.php

看看能运行了吗?
;) good luck
希望对你有用。。。。。

顶部
 



当前时区 GMT+8, 现在时间是 2008-11-21 02:05

    本论坛支付平台由支付宝提供
携手打造安全诚信的交易社区 Powered by Discuz! 5.5.0  © 2001-2007 Comsenz Inc.
清除 Cookies - 联系我们 - PHP开源项目网 - Archiver - WAP