2012年3月12日月曜日

HipHop for PHP インストール

FacebookのHipHop for PHPをUbuntu 11.10にインストールしてみました。
手順は、Facebookが公開している手順(Building and Installing on Ubuntu 11.10)どおりに行えば問題ないです。

何点かインストール中に躓いたところで、OSを32bitにしていたので、cmakeの時点でwarningが出ました。
32bitでのcmake結果です。


32bitでも動かせるようですが、OSを64bitにして再トライしました。

同様の手順で、cmakeしたところ、特に何もメッセージも出ないので、続けてmakeし、実行しました。
ソースの修正を見逃していて、segmentation faultで落ちました。

こちらも、手順に書いてあるように、
lib/ssluse.c をgit hubのとおりに修正、
src/runtime/ext/extension.cpp も同様にgit hubのとおりに修正。

make後、無事実行できることを確認しました。

サンプルプログラムを、HipHopで実行してみました。
・PHPソース
<?php
echo 'HipHop for PHP' ."\n";
echo 'Hello World' . "\n";


実行結果


実行後、指定したディレクトリ以下には実行ファイルや、C++に変換されたソースなどがありました。
実行ファイルの結果


・C++ソース
/tmp/hphp/php/home/isuzuki/dev/php/hello.cpp

#include <runtime/base/hphp.h>
#include <sys/literal_strings_remap.h>
#include <sys/scalar_arrays_remap.h>
#include <sys/scalar_integers_remap.h>
#include <sys/global_variables.h>
#include <sys/cpputil.h>
#include <php//home/isuzuki/dev/php/hello.fws.h>
#include <php//home/isuzuki/dev/php/hello.h>

// Dependencies
#include <runtime/ext/ext.h>
namespace hphp_impl_starter {}

namespace HPHP {
////////////////////////////////////////////////////////////////////////////
///

/* preface starts */
extern CallInfo ci_;
/* preface finishes */
Variant pm_php$$home$isuzuki$dev$php$hello_php(bool incOnce, LVariableTable*
variables, Globals *globals) {
PSEUDOMAIN_INJECTION(run_init::/home/isuzuki/dev/php/hello.php, pm_php$$ho
me$isuzuki$dev$php$hello_php);
LVariableTable *gVariables ATTRIBUTE_UNUSED = (LVariableTable *)g;
echo(NAMSTR(s_ssedffcbbc, "HipHop for PHP\n"));
echo(NAMSTR(s_ssc9bf8a1a, "Hello World\n"));
return true;
}
namespace hphp_impl_splitter {}

////////////////////////////////////////////////////////////////////////////
///
}


/tmp/hphp/php/home/isuzuki/dev/php/hello.fws.h


#ifndef __GENERATED_php__home_isuzuki_dev_php_hello_fws_h6d9aa4dd__
#define __GENERATED_php__home_isuzuki_dev_php_hello_fws_h6d9aa4dd__


namespace HPHP {
////////////////////////////////////////////////////////////////////////////
///

// 1. Static Strings
extern StaticString s_ssc9bf8a1a;
extern StaticString s_ssedffcbbc;

// 2. Static Arrays

// 3. Static Variants





////////////////////////////////////////////////////////////////////////////
///
}


#endif // __GENERATED_php__home_isuzuki_dev_php_hello_fws_h6d9aa4dd__


/tmp/hphp/php/home/isuzuki/dev/php/hello.h


#ifndef __GENERATED_php__home_isuzuki_dev_php_hello_h344dcfd5__
#define __GENERATED_php__home_isuzuki_dev_php_hello_h344dcfd5__


// Declarations

namespace HPHP {
////////////////////////////////////////////////////////////////////////////
///

// Includes and Functions
Variant pm_php$$home$isuzuki$dev$php$hello_php(bool incOnce, LVariableTable*
variables, Globals *globals);

// Constants

////////////////////////////////////////////////////////////////////////////
///
}

#endif // __GENERATED_php__home_isuzuki_dev_php_hello_h344dcfd5__


このようなソースができていました。
これで、インストールは完了したので、今後色々と使ってみようと思います。

0 件のコメント:

コメントを投稿