PHP PHP 8 的扩展 imagick 3.5.0:在 macOS 上安装失败
PHP extension imagick 3.5.0 for PHP 8 : installation on macos fails
当我尝试运行以下命令时
pecl install imagick
然后安装结束:
imagemagick/7.0.11-9/lib -L/usr/local/Cellar/imagemagick/7.0.11-9/lib -lMagickWand-7.Q16HDRI -lMagickCore-7.Q16HDRI
cc ${wl}-flat_namespace ${wl}-undefined ${wl}suppress -o .libs/imagick.so -bundle .libs/imagick_file.o .libs/imagick_class.o .libs/imagickdraw_class.o .libs/imagickpixel_class.o .libs/imagickpixeliterator_class.o .libs/imagick_helpers.o .libs/imagick.o .libs/imagickkernel_class.o .libs/shim_im6_to_im7.o -lgomp -L/usr/local/Cellar/imagemagick/7.0.11-9/lib /usr/local/Cellar/imagemagick/7.0.11-9/lib/libMagickWand-7.Q16HDRI.dylib -L/usr/local/Cellar/little-cms2/2.12/lib -L/usr/local/opt/freetype/lib -L/usr/local/Cellar/glib/2.68.1/lib -L/usr/local/opt/gettext/lib /usr/local/Cellar/imagemagick/7.0.11-9/lib/libMagickCore-7.Q16HDRI.dylib -Wl,-rpath -Wl,/usr/local/Cellar/imagemagick/7.0.11-9/lib
ld: library not found for -lgomp
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [imagick.la] Error 1
ERROR: `make' failed
原因好像是上一版imagick(3.5.0)的编译有改动,需要这个库。无法安装较低版本,因为它们与 PHP 8.0.
不兼容
知道如何在 macOS 上消除这个错误吗?
2021 年 7 月 22 日更新
截至 2021 年 7 月 22 日,版本 3.5.1 在 pecl
频道中稳定,可用于为 PHP 7 和 PHP 8 编译 imagick。
pecl install imagick
通用命令不会再失败
旧答案
3.5 版目前无法在 MAC 上编译,因为 missing/broken 支持 MAC gcc
编译器的 gomp
。
最好的解决方法是安装 3.4.4 版
pecl install imagick-3.4.4
更多信息here
通过手动安装扩展程序可以解决此问题。唯一的问题是安装完成后它不会出现在 pecl 安装的扩展中,并且无法从 pecl 中卸载。尽管如此,我还是提供了我在这里找到的答案:
运行以下命令
cd path/to/installation/is/going/to/be/made
pecl bundle imagick
cd imagick
mv config.m4 config.m4.bak
wget https://raw.githubusercontent.com/yyongpil/imagick/2a2b924b9d25c8ef4a677b72e6868fbc7c9e01cc/config.m4
命令行解释前面的流程命令行:
- 将自己置于要进行安装的文件夹中
- 下载并展开源文件
- 进入源文件夹
- 为了安全起见备份原始
config.m4
文件
- 下载修改后的
config.m4
文件以修复 gomp
问题,如 here 所述
最后简单地继续手动安装过程
phpize
./configuration
make
sudo make install
在此之后,您应该可以使用 PHP 的最新 imagick
扩展。对于 PHP 8.0
和 imagick 3.5.0
,so
文件位于 /usr/local/lib/php/pecl/20200930/imagick.so
新版本已被标记并包含修复的构建配置!您可以使用此命令安装它:
pecl install imagick-3.5.1
(没有它现在应该工作的版本)
当我尝试运行以下命令时
pecl install imagick
然后安装结束:
imagemagick/7.0.11-9/lib -L/usr/local/Cellar/imagemagick/7.0.11-9/lib -lMagickWand-7.Q16HDRI -lMagickCore-7.Q16HDRI
cc ${wl}-flat_namespace ${wl}-undefined ${wl}suppress -o .libs/imagick.so -bundle .libs/imagick_file.o .libs/imagick_class.o .libs/imagickdraw_class.o .libs/imagickpixel_class.o .libs/imagickpixeliterator_class.o .libs/imagick_helpers.o .libs/imagick.o .libs/imagickkernel_class.o .libs/shim_im6_to_im7.o -lgomp -L/usr/local/Cellar/imagemagick/7.0.11-9/lib /usr/local/Cellar/imagemagick/7.0.11-9/lib/libMagickWand-7.Q16HDRI.dylib -L/usr/local/Cellar/little-cms2/2.12/lib -L/usr/local/opt/freetype/lib -L/usr/local/Cellar/glib/2.68.1/lib -L/usr/local/opt/gettext/lib /usr/local/Cellar/imagemagick/7.0.11-9/lib/libMagickCore-7.Q16HDRI.dylib -Wl,-rpath -Wl,/usr/local/Cellar/imagemagick/7.0.11-9/lib
ld: library not found for -lgomp
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [imagick.la] Error 1
ERROR: `make' failed
原因好像是上一版imagick(3.5.0)的编译有改动,需要这个库。无法安装较低版本,因为它们与 PHP 8.0.
不兼容知道如何在 macOS 上消除这个错误吗?
2021 年 7 月 22 日更新
截至 2021 年 7 月 22 日,版本 3.5.1 在 pecl
频道中稳定,可用于为 PHP 7 和 PHP 8 编译 imagick。
pecl install imagick
通用命令不会再失败
旧答案
3.5 版目前无法在 MAC 上编译,因为 missing/broken 支持 MAC gcc
编译器的 gomp
。
最好的解决方法是安装 3.4.4 版
pecl install imagick-3.4.4
更多信息here
通过手动安装扩展程序可以解决此问题。唯一的问题是安装完成后它不会出现在 pecl 安装的扩展中,并且无法从 pecl 中卸载。尽管如此,我还是提供了我在这里找到的答案:
运行以下命令
cd path/to/installation/is/going/to/be/made
pecl bundle imagick
cd imagick
mv config.m4 config.m4.bak
wget https://raw.githubusercontent.com/yyongpil/imagick/2a2b924b9d25c8ef4a677b72e6868fbc7c9e01cc/config.m4
命令行解释前面的流程命令行:
- 将自己置于要进行安装的文件夹中
- 下载并展开源文件
- 进入源文件夹
- 为了安全起见备份原始
config.m4
文件 - 下载修改后的
config.m4
文件以修复gomp
问题,如 here 所述
最后简单地继续手动安装过程
phpize
./configuration
make
sudo make install
在此之后,您应该可以使用 PHP 的最新 imagick
扩展。对于 PHP 8.0
和 imagick 3.5.0
,so
文件位于 /usr/local/lib/php/pecl/20200930/imagick.so
新版本已被标记并包含修复的构建配置!您可以使用此命令安装它:
pecl install imagick-3.5.1
(没有它现在应该工作的版本)