近日发现了一个很有用的PHP扩展,它可以让PHP直接执行C代码,无需编译。TCC(Tiny C Compiler)是一个C编译器,支持直接执行C源代码。
关于TCC的介绍这里不多说,刚开始在32位Ubuntu下安装,很顺利就装了,不过在64位CentOS上安装时却遇到很多错误,花了差不多半天的时间终于搞定了。
下面详细讲一下我在64们CentOS上安装tcc 的 php扩展中遇到的问题以及解决办法
一、安装TCC编译器
注意不要直接从官网那里下载源码,那里的代码在make编译完,执行make test 时会报错,如下:
------------ test3 ------------ ../tcc -B.. -DTCC_TARGET_X86_64 -run ../tcc.c -B.. -DTCC_TARGET_X86_64 -run ../tcc.c -B.. -DTCC_TARGET_X86_64 -run ../tcc.c -B.. -run tcctest.c > test.out3 tcc: undefined symbol 'alloca' make[1]: *** [test3] Error 255
需要直接从版本库中下载已经修复此错误的版本,可以下载最新的
wget tar -zxvf f98c2306a0857ad3f8800f91e0554a27adc7f675.tar.gz cd tinycc ./configure --prefix=/usr
我下载的文件是2012-04-18日提交的版本,命令如下:
下面我们要编辑一下Makefile文件,不然后面安装php_tcc模块时编译会无法通过
vim Makefile
找到 ”libtcc.a: $(LIBTCC_OBJ)“ 所在行的上一行
代码应该是
$(CC) -o $@ -c $< $(NATIVE_DEFINES) $(CFLAGS)
将这一行的最后加上 "-fPIC”,即改为
$(CC) -o $@ -c $< $(NATIVE_DEFINES) $(CFLAGS) -fPIC
保存退出
make
中间可能会报 make: texi2html: Command not found
这个是生成html帮助文档的,可以忽略,需要的话可以先 texi2html 然后重新make
yum install texi2html
没有make错误就继续执行下面命令
make test make install