Mac で PHP pecl を介して Imagick 3.5 をインストールするときの「ld: library not found for -lgomp」を修正


2021 年 7 月 25 日更新



2021 年 7 月 22 日現在、バージョン 3.5.1 は pecl チャネルで安定しており、PHP 7 と PHP 8 の両方で imagick をコンパイルするために使用できます.

pecl install imagick


一般的なコマンドはもう失敗しません

TL;DR


pecl 経由で Imagick の古いバージョン (3.4.4) を強制的にインストールします.

pecl install imagick-3.4.4


はじめに



Imagemagick の PHP 拡張機能の最新バージョン (3.5) ( Imagick ) では、Apple システムでコンパイル エラーが発生します.これは、PHP バージョン (7.4 および 8 でテスト済み) および Imagemagick バージョン (6.x および 7.x でテスト済み) とは無関係です. ) 代わりに、gcc コンパイラの gomp の欠落/壊れたサポートに関連しています.

Intel マシンでテストしたので、これは Apple Silicon とは関係ありません.

エラー



実行後、コンパイル中にエラーがスローされます

pecl install imagick


完全なエラーは

ld: library not found for -lgomp


潜在的な修正



Gomp によるコンパイル エラーについて話しているスタック オーバーフロー スレッドがいくつかあります.私が見つけた最も包括的な is this .

回答で提案された修正のいくつかを試しましたが、ほとんどの場合、異なるバージョンの gcc をコンパイルする必要があり、自作によるその後の更新が不安定になります.

また、llvm を示唆するスタック オーバーフローでこの他の amazing thread を試し、コンパイラ フラグを修正しましたが、おそらく pecl コンパイル プロセスの組み込みパラメータが原因で、この特定のケースでは機能しませんでした.

実際の修正



最終的な修正は、Imagick のバージョンを 4.3.3 にダウングレードすることでした.これにより、完全にコンパイルされます.

これは、github から downloading the release を実行するか、次のように pecl でバージョンを強制するだけで実行できます.

pecl install imagick-3.4.4