kurukuru-papaのブログ

主に、ソフトウェア開発に関連したメモを書き溜めたいと思います。

APRの導入

APR(Apache Portable Runtime)をちょっと使ってみました。導入方法をメモしておきます。

動作環境

OS : Windows XP, Cygwin
APR Version : 1.2.12

1.ダウンロード

次のサイトから、アーカイブファイルをダウンロードしました。

サイト

The Apache Portable Runtime Project
http://apr.apache.org/

アーカイブファイル

apr-1.2.12.tar.gz

2.アーカイブファイルの展開

適当なフォルダに移動して、次のコマンドを実行し、アーカイブファイルを展開しました。

tar xvfz apr-1.2.12.tar.gz

カレントフォルダに、次のフォルダが作成され、アーカイブファイルが展開されました。以降、このフォルダをAPR_HOMEと記述します。

apr-1.2.12

3.コンパイル&インストール

README.devを読んでコンパイル&インストールを行います。ここでは、インストール先を$HOME/localとしました。

デバッグコードを含めたくない場合

./configure --prefix=$HOME/local
make
make install

デバッグコードを含むライブラリを作成したい場合

./configure --prefix=$HOME/local --enable-debug --enable-pool-debug=all
make
make install

4.テストプログラムのコンパイル&実行

アーカイブファイルには、テストプログラムが含まれていました。これをコンパイル&実行してみました。

コンパイル

cd $APR_HOME/test
make

次の実行ファイルが作成されました。

$ ls -1 *.exe
globalmutexchild.exe*
occhild.exe*
proc_child.exe*
readchild.exe*
sendfile.exe*
sockchild.exe*
testall.exe*
testlockperf.exe*
testmutexscope.exe*
testshmconsumer.exe*
testshmproducer.exe*
tryread.exe*

1つ実行してみました。が、コアダンプしてしまいました。

$ ./testall.exe 2>tmp.log
testatomic : SUCCESS
testdir : SUCCESS
testdso : \Aborted (core dumped)

5.動作確認

自分で簡単なプログラムを作成し、動作確認してみました。

ソースファイル(try001.c)

#include <stdio.h>
#include "apr_general.h"
#include "apr_version.h"

int main(int argc, char **argv) {
	
	// APRを初期化する。
	apr_initialize();
	
	// APRのバージョン情報を出力する。
	printf("APR's version : %s\n", apr_version_string());
	
	// APRを終了する。
	apr_terminate();
	
	return 0;
}

コンパイル

gcc -o try001 -g -O2 -Wall -I ~/local/include/apr-1 -lcrypt try001.c ~/local/lib/libapr-1.a

実行結果

$ ./try001.exe
APR's version : 1.2.12