Ubuntu 18.04 编译安装PHP拓展 —— AMQP 1.9.4

软件准备

rabbitmq-c库

Github地址:https://github.com/alanxz/rabbitmq-c

rabbitmq-c v0.9.0:https://codeload.github.com/alanxz/rabbitmq-c/zip/v0.9.0

AMQP库

Github地址:https://github.com/pdezwart/php-amqp

php-amqp v1.9.4:https://github.com/pdezwart/php-amqp/archive/v1.9.4.tar.gz

注:本例以 rabbitmq-c-0.9.0 和 amqp-1.9.4 作为编译示范, amqp-1.9.4 对PHP 5.3.0 及以上版本通用,参见官方说明

编译rabbitmq-c库

本例以 rabbitmq-c-0.9.0.zip 编译,请注意下载的文件名字。

# 解压目录
unzip rabbitmq-c-0.9.0.zip
# 进入目录
cd rabbitmq-c-0.9.0/
# 创建build目录并进入
mkdir build && cd build
# 当cmake根据rabbitmq-c的根目录下的CMakeList.txt创建Makefile文件时,会将Makefile文件放进build目录
# 请注意,后面有两个点,不要漏了
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/rabbitmq-c ..
# 创建
cmake --build .  --target install
# 如果编译成功,/usr/local/rabbitmq-c应该有货了(当然这个目录可以自由指定,但是前后需要一致),如果失败了,Google一下

编译安装AMQP扩展

本例以 amqp-1.9.4.tgz 编译,请注意下载的文件名字。

# 执行这行命令前,记得先cd到有amqp-1.9.4.tgz这个文件的目录
tar -zxvf amqp-1.9.4.tgz
# 进入解压后的目录
cd amqp-1.9.4
# phpize 如果有多个版本的php,记得选对phpize
/usr/local/php/bin/phpize
# ./configure 这里要配合上面的rabbitmq-c的路径,同时要选对php-config,多版本php的时候容易搞晕。
./configure --with-php-config=/usr/local/php/bin/php-config --with-amqp --with-librabbitmq-dir=/usr/local/rabbitmq-c
# make一下吧
make

万事大吉?No!

有没有报下面的错?

/usr/bin/ld: cannot find -lrabbitmq
collect2: error: ld returned 1 exit status
Makefile:221: recipe for target 'amqp.la' failed
make: *** [amqp.la] Error 1

不管你有没有,反正我是有了。。。

一般是系统缺乏对应的库依赖,Ubuntu里可以apt-get install

apt-get install librabbitmq-dev

CentOS 里则进入上面的 /usr/local/rabbitmq-c 目录,缺少lib目录,而文件夹是lib64?创建个软链接即可。

cd /usr/local/rabbitmq-c
ln -s lib64 lib

回到原目录,再试试Make

make

如果没有问题,make install

make install

到这步,如果没有问题,amqp.so文件已经生成,加入php.ini即可

参考资料

安装php的rabbitmq扩展amqp
关于usr/bin/ld: cannot find -lxxx问题总结

作者:Seeker  创建时间:2019-05-12 22:51
 更新时间:2019-07-09 15:50