コンテンツにスキップ

Autotools/libtoolize

出典: フリー教科書『ウィキブックス(Wikibooks)』

GNU Libtoolize は、GNU Libtool に関連したツールで、プロジェクトに Libtool を統合するためのスクリプトを自動生成するツールです。具体的には、Libtool を使用するプロジェクトの初期設定を簡素化し、必要なテンプレートやスクリプトをセットアップします。

主な役割と機能

[編集]
  1. Libtool ファイルの生成
    • プロジェクトに必要な ltmain.shlibtool.m4 などのファイルを生成・コピーします。
    • Libtool によるライブラリ管理やビルドプロセスが利用可能になります。
  2. aclocal.m4 の準備
    • libtool.m4 マクロをプロジェクトに追加し、aclocal によるマクロ処理が可能な状態にします。
  3. Autotools 環境との統合
    • AutoconfAutomake のスクリプトと連携し、Libtool をプロジェクトのビルドシステムに統合します。

基本的な使用方法

[編集]

標準コマンド

[編集]

以下のコマンドで Libtool をプロジェクトにセットアップします:

libtoolize

オプション

[編集]
  • --copy
    • 必要なファイルをシンボリックリンクではなくコピーします。
    • 例:
    libtoolize --copy
    
  • --force
    • 既存のファイルがあっても強制的に上書きします。
    • 例:
    libtoolize --force
    
  • --install
    • 必要なファイルをプロジェクトにインストールします(デフォルト動作)。
    • 例:
    libtoolize --install
    
  • --quiet
    • 詳細な出力を抑制します。

具体例

[編集]

プロジェクト構成

[編集]

次のようなプロジェクトを考えます:

project/
├── configure.ac
├── Makefile.am
└── src/
    └── example.c

configure.ac の内容

[編集]
AC_INIT([MyProject], [1.0], [example@example.com])
AM_INIT_AUTOMAKE
AC_PROG_LIBTOOL
AC_CONFIG_FILES([Makefile])
AC_OUTPUT

Makefile.am の内容

[編集]
AUTOMAKE_OPTIONS = foreign
SUBDIRS = src

src/Makefile.am の内容

[編集]
lib_LTLIBRARIES = libexample.la
libexample_la_SOURCES = example.c

Libtool のセットアップ

[編集]

以下の手順でプロジェクトに Libtool を統合します:

  1. libtoolize の実行
    libtoolize --install --force
    
    このコマンドにより、以下のファイルがプロジェクトに追加されます:
    • ltmain.sh
    • libtool.m4
    • aclocal.m4aclocal を後で実行する場合)
  2. Autotools のセットアップ
    • aclocal を実行してマクロを更新します:
    aclocal
    
    • autoconf を実行して configure を生成します:
    autoconf
    
    • 必要なら automake も実行します:
    automake --add-missing
    
  3. ビルドの実行
    ./configure
    make
    

Libtoolize の役割

[編集]
  • 静的ライブラリと共有ライブラリの管理
    • プロジェクトでライブラリをビルドする際、OS やコンパイラ間の違いを吸収します。
    • 静的ライブラリ(.a)や共有ライブラリ(.so.dylib)を自動的に扱うことが可能です。
  • クロスプラットフォームのサポート
    • UNIX、macOS、WindowsやLinuxのディストリビューションなど、異なるプラットフォームでの互換性を確保します。
  • Autotools との連携
    • Autoconf や Automake と組み合わせることで、統一されたビルドシステムを提供します。

関連ツールとの関係

[編集]
  1. Autoconf
    • configure.ac で定義されたマクロに基づいて、Libtool をセットアップします。
  2. Automake
    • Makefile.amlib_LTLIBRARIES を記載することで、Libtool を使用したライブラリビルドを簡略化します。
  3. Aclocal
    • libtool.m4aclocal.m4 に追加してマクロの設定を管理します。

注意点

[編集]
  1. ファイルの競合
    • 既存の ltmain.sh などが上書きされる可能性があるため、必要に応じて --force オプションを利用します。
  2. バージョンの互換性
    • プロジェクトの Libtool バージョンがシステムにインストールされているものと異なる場合、エラーが発生する可能性があります。
  3. 最新の Autotools の利用
    • Autotools 全体を最新バージョンに保つことで、ツール間の互換性問題を軽減できます。

まとめ

[編集]

GNU Libtoolize は、Libtool を使用したクロスプラットフォームのライブラリビルドを簡略化する重要なツールです。プロジェクトに必要なファイルを自動生成し、Autotools 環境とのスムーズな統合をサポートします。特にライブラリの移植性を考慮するプロジェクトにおいて、不可欠な役割を果たします。