2009年08月05日

bzlib(bzip2)のコンパイル&インストール

bzlibは、以下の場所にあります。
http://www.bzip.org/

右上の方のDownloadsより、
http://www.bzip.org/downloads.html

Here is the 1.0.6 source tarball , which includes full documentation.
と書かれている所から、以下のファイルを適当なディレクトリに保存します。
bzip2-1.0.6.tar.gz

MSYSで、ファイルを保存したディレクトリに移動し、
$ tar xzf bzip2-1.0.6.tar.gz
$ cd bzip2-1.0.6

インストールの時にエラーで止まってしまうので、Makefileにパッチ
bzip2-makefile.diff
を適用します。

$ patch -p1 < bzip2-makefile.diff

パッチを適用した後、
$ make
$ make PREFIX=/mingw install

以上で終了です。


【更新履歴】を見る
posted by あべちん at 12:13 | Comment(2) | TrackBack(0) | FFmpeg追加ライブラリ
この記事へのコメント
Mingw-w64のPersonal Buildから、bzip2についてdiffしてみました。
bzip2recover.cについては、セキュリティ的に大切な修正のような気が^^;

diff -ur bzip2-1.0.6/bzip2.c new.bzip2-1.0.6/bzip2.c
--- bzip2-1.0.6/bzip2.c 2010-09-11 08:04:53 +0900
+++ new.bzip2-1.0.6/bzip2.c 2014-06-24 19:05:10 +0900
@@ -128,7 +128,7 @@
#if BZ_LCCWIN32
# include <io.h>
# include <fcntl.h>
-# include <sys\stat.h>
+# include <sys/stat.h>

# define NORETURN /**/
# define PATH_SEP '\\'
diff -ur bzip2-1.0.6/bzip2recover.c new.bzip2-1.0.6/bzip2recover.c
--- bzip2-1.0.6/bzip2recover.c 2010-09-11 08:18:40 +0900
+++ new.bzip2-1.0.6/bzip2recover.c 2014-06-24 19:05:10 +0900
@@ -309,7 +309,8 @@
UInt32 buffHi, buffLo, blockCRC;
Char* p;

- strcpy ( progName, argv[0] );
+ strncpy ( progName, argv[0], BZ_MAX_FILENAME-1);
+ progName[BZ_MAX_FILENAME-1]='\0';
inFileName[0] = outFileName[0] = 0;

fprintf ( stderr,
diff -ur bzip2-1.0.6/bzlib.h new.bzip2-1.0.6/bzlib.h
--- bzip2-1.0.6/bzlib.h 2010-09-11 08:08:42 +0900
+++ new.bzip2-1.0.6/bzlib.h 2014-06-24 19:05:10 +0900
@@ -81,19 +81,43 @@
/* windows.h define small to char */
# undef small
# endif
-# ifdef BZ_EXPORT
-# define BZ_API(func) WINAPI func
-# define BZ_EXTERN extern
+
+# include <stdio.h>
+# include <io.h>
+# include <sys/utime.h>
+# define fdopen _fdopen
+# define isatty _isatty
+# define setmode _setmode
+# define utime _utime
+# endif
+
+#ifndef __GNUC__
+# define __DLL_IMPORT__ __declspec(dllimport)
+# define __DLL_EXPORT__ __declspec(dllexport)
# else
- /* import windows dll dynamically */
-# define BZ_API(func) (WINAPI * func)
-# define BZ_EXTERN
+# define __DLL_IMPORT__ __attribute__((dllimport)) extern
+# define __DLL_EXPORT__ __attribute__((dllexport)) extern
# endif
-#else
-# define BZ_API(func) func
-# define BZ_EXTERN extern
+
+#if (defined __WIN32__) || (defined _WIN32)
+# if defined BUILD_BZIP2_DLL || defined BZ_EXPORT
+# define BZIP2_DLL_IMPEXP __DLL_EXPORT__
+# elif defined(BZIP2_STATIC)
+# define BZIP2_DLL_IMPEXP
+# elif defined (USE_BZIP2_DLL) || defined BZ_IMPORT
+# define BZIP2_DLL_IMPEXP __DLL_IMPORT__
+# elif defined (USE_BZIP2_STATIC)
+# define BZIP2_DLL_IMPEXP
+# else /* assume USE_BZIP2_DLL */
+# define BZIP2_DLL_IMPEXP __DLL_IMPORT__
+#endif
+#else /* __WIN32__ */
+# define BZIP2_DLL_IMPEXP
#endif

+#define BZ_API(func) func
+#define BZ_EXTERN BZIP2_DLL_IMPEXP
+

/*-- Core (low-level) library functions --*/
Posted by shoshosho at 2014年07月17日 17:25
shoshoshoさん、こんにちは。管理人です。
コメントありがとうございます。

ソースを見ると、BZ_MAX_FILENAMEは2000になっているので、ファイル名の長さが2000文字を超えないようにしているんでしょうか?

とりあえず、bzip2recoverは単体プログラムで、使用しない限り問題ないと思いますので、様子を見ることにします。

あと、パッチやログなどはコメントが長くなってしまうため、pastebinなどを使って、リンクを張っていただけると助かります。

情報ありがとうございました。
Posted by あべちん at 2014年07月19日 20:00
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/31078679
※言及リンクのないトラックバックは受信されません。

この記事へのトラックバック