CentOS 7環境におけるGraphicsMagickソースコードからのビルド手順

ビルド依存パッケージの導入

コンパイラツールチェーンおよび画像処理に必要なフォント・コーデックライブラリを一括で追加します。

yum install -y gcc gcc-c++ autoconf bc wget screen telnet lrzsz zip unzip lsof locate nc tcpdump strace iftop iotop htop crontabs ntpdate curl
yum install -y libjpeg libjpeg-devel libpng libpng-devel giflib giflib-devel libwebp libwebp-devel freetype freetype-devel libtool-ltdl libtool-ltdl-devel

ソースコードの取得と展開

作業ディレクトリを分離し、アーカイブを展開します。管理の簡素化のためベースパスを変数として定義しています。

BASE_INSTALL_DIR="/opt/graphicmagick"
mkdir -p "$BASE_INSTALL_DIR/source" && cd "$BASE_INSTALL_DIR/source"
wget https://util.obs.cn-east-3.myhuaweicloud.com/GraphicsMagick-1.3.35.tar.gz
tar xzf GraphicsMagick-1.3.35.tar.gz
mv GraphicsMagick-1.3.35 gm-build
cd gm-build

設定スクリプト実行とコンパイル

インストール先と必要な機能を明示して設定を行います。モジュールビルド環境で警告が表示される場合は、別途 `libtool-ltdl` パッケージを導入してください。

./configure \
  --prefix="$BASE_INSTALL_DIR" \
  --with-quantum-depth=8 \
  --enable-shared \
  --enable-static \
  --enable-lzw \
  --without-perl \
  --with-modules

make -j$(nproc)
make install

動的ライブラリレジストリの更新

システムリンカーが新規作成された共有オブジェクトを検知できるよう、設定ファイルを追記して反映させます。

echo "/opt/graphicmagick/lib/" >> /etc/ld.so.conf
ldconfig

環境変数への登録

シェルセッション全体で実行可能ファイルを認識させるため、システム wide プロファイルとユーザー用プロファイルに経路を追加します。

# システム全体向け
cat >> /etc/profile << 'ENV_EOF'
export GM_LIB_ROOT="/opt/graphicmagick"
export PATH="$GM_LIB_ROOT/bin:$PATH"
export LD_LIBRARY_PATH="$GM_LIB_ROOT/lib:${LD_LIBRARY_PATH:-}"
ENV_EOF
source /etc/profile

# ユーザー個別向け(例:root)
cat >> /root/.bashrc << 'ENV_EOF'
export GM_LIB_ROOT="/opt/graphicmagick"
export PATH="$GM_LIB_ROOT/bin:$PATH"
export LD_LIBRARY_PATH="$GM_LIB_ROOT/lib:${LD_LIBRARY_PATH:-}"
ENV_EOF
source /root/.bashrc

動作検証とグローバルパスへの配置

インタラクティブシェルからバージョン情報とサポートフォーマット一覧を取得して初期設定を確認し、標準バイナリパスへコピー設置します。

gm version
gm convert -list formats
cp /opt/graphicmagick/bin/gm /usr/local/bin/gm

主要構成パラメータ辞書

--prefix=PATH
ツールのインストール基準ルートディレクトリを指定します。
--bindir=PATH / --libdir=PATH / --datadir=PATH
各カテゴリごとの保存先ディレクトリを個別にオーバーライドします。
--enable-shared / --enable-static
動的ライブラリ(.so)または静的ライブラリ(.a)の生成を有効化します。
--with-modules
ランタイムプラグインロード機構を有効にします。
--with-quantum-depth=N
内部イメージ表現のビット幅を指定(8または16)。値を上げると階調表現が精密になりますが、演算負荷とメモリ使用量が増加します。
--disable-openmp
SMP並列計算機能を無効化します。特定のフィルタ処理におけるメモリエラー回避や安定運用に寄与することがあります。
--without-*-bindings
Perl, Python, C++ 等の言語バインディングをコンパイル対象から除外し、ビルド時間を短縮します。
--enable-libtool-verbose
共有ライブラリ結合プロセスのトレースログを出力し、リンク失敗時の原因特定を容易にします。
--with-included-ltdl
OS標準に備わっているlibltdlではなく、ソース同梱版を使用するように強制します。

タグ: GraphicsMagick centos7 SourceCompilation LDConfig ShellEnvironment

7月5日 20:27 投稿