automakeを突っ込んで勉強してみる(その3 〜 サブ機能 〜)

目標

 サブ機能でやりたいことは以下の2点である。

  1. 動的ライブラリの生成
  2. ライブラリのインストール ★ 相対パスではダメ(下記Makefile.amの中身を参照)

共通機能の全体像とファイル

 サブ機能のディレクトリ構造は以下のとおり

 `- sub                       <==== サブ機能
      +- include              
      |     `- sub.h          ☆ メイン機能が取り込むヘッダファイル
      +- lib                  ★ 動的ライブラリのインストール場所
      +- src
           |- Makefile.am     ☆ Makeファイル
           `- sub.c           ☆ サブ機能の実体(ソース)

各ファイルの中身

 サブ機能で必要なファイル群の中身を下記に示す。
ここで注目したいのが、libdirのパス指定である。絶対パスでないとダメだったこと。ツールが相対パスだと怒るのである。

Makefile.am

libdir = /home/andre/work/autoreconf/test/sub/lib           ★ 絶対パスでないとツールに怒られる
lib_LTLIBRARIES    = libsub.la                              ★ 動的ライブラリ名に注意:ここでは、[.so]とは書かない。
libsub_la_SOURCES = sub.c

sub.c

#include

void
print_sub()
{
    printf( "%s\n", __func__ );
}

sub.h

extern void print_sub();

lib配下の生成物一覧

 lib配下にできた生成物を示す。
libsub.la がいったい何者なのかはわからない。

 andre@andre-VirtualBox:~/work/autoreconf/test/sub/lib$ ll
 合計 28
 drwxrwxr-x 2 andre andre 4096 2012-08-13 10:13 ./
 drwxrwxr-x 5 andre andre 4096 2012-08-13 09:23 ../
 -rw-r--r-- 1 andre andre 4382 2012-08-13 10:13 libsub.a
 -rwxr-xr-x 1 andre andre  954 2012-08-13 10:13 libsub.la*
 lrwxrwxrwx 1 andre andre   15 2012-08-13 10:13 libsub.so -> libsub.so.0.0.0*
 lrwxrwxrwx 1 andre andre   15 2012-08-13 10:13 libsub.so.0 -> libsub.so.0.0.0*
 -rwxr-xr-x 1 andre andre 6863 2012-08-13 10:13 libsub.so.0.0.0*

automakeを突っ込んで勉強してみる(その4 〜 メイン機能 〜) - tomohikosevenの日記 に続く