64位Linux环境安装PHP TCC 扩展方法


近日发现了一个很有用的PHP扩展,它可以让PHP直接执行C代码,无需编译。TCC(Tiny C Compiler)是一个C编译器,支持直接执行C源代码。

关于TCC的介绍这里不多说,刚开始在32位Ubuntu下安装,很顺利就装了,不过在64位CentOS上安装时却遇到很多错误,花了差不多半天的时间终于搞定了。

下面详细讲一下我在64们CentOS上安装tcc 的 php扩展中遇到的问题以及解决办法

一、安装TCC编译器

从官网 http://bellard.org/tcc/ 下载源码,编译安装。

注意不要直接从官网那里下载源码,那里的代码在make编译完,执行make test 时会报错,如下:

  1.  ------------ test3 ------------  
  2. ../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  
  3. tcc: undefined symbol 'alloca'  
  4. make[1]: *** [test3] Error 255  

需要直接从版本库中下载已经修复此错误的版本,可以下载最新的

  1. wget http://repo.or.cz/w/tinycc.git/snapshot/f98c2306a0857ad3f8800f91e0554a27adc7f675.tar.gz  
  2.   
  3. tar -zxvf f98c2306a0857ad3f8800f91e0554a27adc7f675.tar.gz  
  4.   
  5. cd tinycc  
  6.   
  7. ./configure --prefix=/usr  

版本库地址 http://repo.or.cz/w/tinycc.git

我下载的文件是2012-04-18日提交的版本,命令如下:

 下面我们要编辑一下Makefile文件,不然后面安装php_tcc模块时编译会无法通过

  1. vim Makefile  

找到 ”libtcc.a: $(LIBTCC_OBJ)“ 所在行的上一行

代码应该是

  1. $(CC) -o $@ -c $< $(NATIVE_DEFINES) $(CFLAGS)  

将这一行的最后加上 "-fPIC”,即改为

  1. $(CC) -o $@ -c $< $(NATIVE_DEFINES) $(CFLAGS) -fPIC  

保存退出

  1. make  

中间可能会报 make: texi2html: Command not found

这个是生成html帮助文档的,可以忽略,需要的话可以先 texi2html 然后重新make

  1. yum install texi2html  

没有make错误就继续执行下面命令

  1. make test  
  2. make install  
  • 1
  • 2
  • 3
  • 下一页

相关内容