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