2012/10/29 追記libcdio-0.90がリリースされました。
いろいろ変わりましたので、記事を書き直しました。
libcdioのコンパイル&インストール (libcdio-0.90以降)libcdioは、以下の場所にあります。
http://www.gnu.org/s/libcdio/先に、
libiconvをインストールしておいてください。
Browse Source Code
git (libcdio) – Browse libcdio source より、
http://git.savannah.gnu.org/gitweb/?p=libcdio.gitshortlogの右端一番上、snapshotからソースコードをダウンロードします。
libcdio-f920810.tar.gz
libcdio-の後ろの7桁の英数字は、gitのハッシュ値になっていますので、その時点での値に読み替えてください。
または、以下のように、gitでダウンロードします。
$ git clone
http://git.savannah.gnu.org/r/libcdio.git2012/02/26 追記2012/02/20 の更新で、
paranoia code removed. Is now in separate tree under GPL v2+.
と書いてあり、paranoiaのソースコードは以下の場所にあります。
CDDA paranoia Homepage
http://xiph.org/paranoia/cdparanoia-III-10.2.src.tgz をMinGWでビルドしてみたのですが、MinGWに無いヘッダファイルが使われていて、ビルドできませんでした。
FFmpegでlibcdioを有効にしてビルドするためには、paranoiaのソースコードも必要なので、libcdioのparanoiaのソースコードをrevertするパッチを作りました。
autogen.sh を実行する前に適用してください。
libcdio_paranoia-20120226.diff2012/03/27 追記paranoiaのソースコード用パッチを更新しました。
libcdio_paranoia-20120327.diff2012/04/18 追記libcdioにあるgetoptを使わないようにするパッチです。
適用しなくても、FFmpegのビルドには支障はありません。
libcdio-20120418.diff2012/10/23 追記getopt削除パッチを更新しました。
libcdio-20121023.diffMSYSで、ファイルを保存したディレクトリに移動し、
$ tar xzf libcdio-f920810.tar.gz
$ cd libcdio-f920810
$ patch -p1 < libcdio_paranoia-20120327.diff
$ patch -p1 < libcdio-20121023.diff
$ ./autogen.sh --prefix=/mingw --disable-cxx --disable-example-progs --disable-shared
$ make
$ make install
以上で終了です。
2012/04/25 追記mingwrtとw32apiの代わりにMinGW-w64を使用していると、コンパイル時にエラーになります。
その場合、 autogen.sh を実行した後、
$ make CC="gcc -D__MINGW64__"
としてください。
autogen.shは最初に1回実行すれば、次にconfigureからやりなおす場合、
$ ./configure --prefix=/mingw --disable-cxx --disable-example-progs --disable-shared
とすれば良いです。
【補足】
git cloneでソースコードをダウンロードした場合、autogen.shを実行した時に、以下のようなエラーで失敗することがあります。
Rebuilding ./configure with autoreconf...
(中略)
configure.ac:618: the top level
/bin/m4: cannot remove temporary directory /tmp/ar6368.3352/m4-7MK9zJ: Directory not empty
autom4te-2.67: /bin/m4 failed with exit status: 1
C:\msys\1.0\bin\aclocal: /usr/bin/autom4te-2.67 failed with exit status: 1
autoreconf: aclocal failed with exit status: 1
autoreconf failed
これは、configure.acの改行コードがCRLFになっているのが原因ですので、以下のようにして、改行コードを修正します。
$ mv configure.ac configure.ac.bak
$ tr -d \\r < configure.ac.bak > configure.ac
修正後、autogen.shを実行します。
2012/01/27 追記2012/01/17の更新(gitハッシュ値b7b6551)で、改行コードの問題は修正されました。
【更新履歴】を見る
2011/12/02 追記
ソースコードがダウンロードできなくなっているので、別のURLに変更しました。
$ git clone git://git.sv.gnu.org/libcdio.git
$ git clone http://git.savannah.gnu.org/r/libcdio.git
2011/12/22 追記
gitのハッシュ値を、6d907af から 2fea515 に変更しました。
2011/12/22 追記
2011/12/11のアップデートでstrndup関数が使用されているため、MinGW環境でコンパイルできなくなってしまいました。
2011/12/05の、libcdio-2fea515まではコンパイルできます。
git cloneでダウンロードしたら、以下のコマンドで取り出せます。
$ git checkout 2fea515
2011/12/25 追記
strndup関数について補足説明を書きましたので、こちらもお読みください。
libcdioで「undefined reference to `strndup'」
2012/01/17 追記
2012/01/17の更新(gitハッシュ値8238905)で、strndup関数の問題は修正されました。
2012/01/17 追記
gitのハッシュ値を、2fea515 から 8238905 に変更しました。
2012/01/29 追記
コンパイル時間短縮のため、autogen.shとconfigureのオプションに「--disable-cxx --disable-example-progs」を追加しました。
2012/02/23 追記
gitのハッシュ値を、8238905 から c742eed に変更しました。
2012/02/23 追記
2012/02/20 の更新で、
paranoia code removed. Is now in separate tree under GPL v2+.
と書いてあるのですが、削除されたコードがどこに行ったのか分かりません。
とりあえず、paranoia codeが削除される前(gitハッシュ値 c742eed)、
Debian POSIXness fix from N. Boullis
の、ソースコードをお使いください。
gitの場合は、git cloneの後、
$ cd libcdio
$ git checkout c742eed
です。
2012/02/23 追記
gitのハッシュ値を、c742eed から 1772b4e に変更しました。
2012/02/26 追記
2012/02/20 の更新で、
paranoia code removed. Is now in separate tree under GPL v2+.
と書いてあり、paranoiaのソースコードは以下の場所にあります。
CDDA paranoia Homepage
http://xiph.org/paranoia/
cdparanoia-III-10.2.src.tgz をMinGWでビルドしてみたのですが、MinGWに無いヘッダファイルが使われていて、ビルドできませんでした。
FFmpegでlibcdioを有効にしてビルドするためには、paranoiaのソースコードも必要なので、libcdioのparanoiaのソースコードをrevertするパッチを作りました。
autogen.sh を実行する前に適用してください。
libcdio_paranoia-20120226.diff
$ patch -p1 < libcdio_paranoia-20120226.diff
2012/03/04 追記
gitのハッシュ値を、1772b4e から 4a4ebcd に変更しました。
2012/03/04 追記
paranoiaのソースコード用パッチを更新しました。
libcdio_paranoia-20120304.diff
2012/03/06 追記
gitのハッシュ値を、4a4ebcd から 76a3d80 に変更しました。
2012/03/06 追記
paranoiaのソースコード用パッチを更新しました。
libcdio_paranoia-20120306.diff
2012/03/07 追記
gitのハッシュ値を、76a3d80 から 8023341 に変更しました。
2012/03/07 追記
paranoiaのソースコード用パッチを更新しました。
libcdio_paranoia-20120307.diff
2012/03/14 追記
gitのハッシュ値を、8023341 から a18d385 に変更しました。
2012/03/15 追記
include/cdio/utf8.h で使われているFILE構造体が、コンパイル時にエラーになるので、
#include <stdio.h>
を追加するパッチを適用してください。
ついでに、FFmpegのリンク時の「warning: multiple common of enum」を修正しました。
libcdio-20120315.diff
2012/03/20 追記
gitのハッシュ値を、a18d385 から 0b5e5d6 に変更しました。
2012/03/20 追記
paranoiaのソースコード用パッチを更新しました。
libcdio_paranoia-20120320.diff
2012/03/20 追記
include/cdio/utf8.h で使われているFILE構造体の問題は、オリジナルの方で修正されました。
FFmpegのリンク時の「warning: multiple common of enum」の修正と、getoptをMinGWの方を使うようにするパッチです。
適用しなくても、FFmpegのビルドには支障はありません。
libcdio-20120320.diff
2012/03/27 追記
gitのハッシュ値を、0b5e5d6 から aa0c1cb に変更しました。
2012/03/27 追記
paranoiaのソースコード用パッチを更新しました。
libcdio_paranoia-20120327.diff
2012/04/18 追記
gitのハッシュ値を、aa0c1cb から a7bca58 に変更しました。
2012/04/18 追記
getoptを、MinGWの方を使うようにするパッチです。
適用しなくても、FFmpegのビルドには支障はありません。
libcdio-20120418.diff
2012/04/25 追記
mingwrtとw32apiの代わりにMinGW-w64を使用していると、コンパイル時にエラーになります。
その場合、 autogen.sh を実行した後、
$ make CC="gcc -D__MINGW64__"
としてください。
2012/10/21 追記
getopt削除パッチを更新しました。(2012/10/21 libcdio-f920810以降)
libcdio-20121021.diff
2012/10/21 追記
gitのハッシュ値を、a7bca58 から f920810 に変更しました。
2012/10/23 追記
getopt削除パッチを更新しました。
libcdio-20121023.diff
2012/10/23 追記
パッチの説明を修正しました。
getoptを、MinGWの方を使うようにするパッチです。
libcdioにあるgetoptを使わないようにするパッチです。
【更新履歴】を閉じる
↑情報ありがとうございます。
どうしてもgit cloneで入手したくて・・・w
でもやっぱ、x86_64でのmakeで"win32_ioctl.lo error"・・・コケますね。
改行コードの問題は、snapshotだと大丈夫なのに、git cloneだとなんでエラーになるんだろう?と、ハマってかなり悩みました。
お役に立ててよかったです。
"win32_ioctl.lo error"は、試せる環境が無いので分かりません。
新しいパソコンが欲しい…。
わからなかったで、公式でpatchを取ってきて+と-を修正して作りましたw
"paranoia2.c"等、完全に削除されたものは、git-c742eedのをコピーしてますw
libcdio_paranoia-20120226.diffの
473行目
+paranoiaheaders = cdda.h
は↓にしなくて良いのでしょうか?
+paranoiaheaders = cdda.h cdtext.h
git diffだと削除されたファイルは表示されないみたいですね。
paranoiaのソースコードが削除される前と後のソースコードを両方用意して、こんな感じでdiffコマンドでpacthを作りました。
diff -urN -x.git* -x.cvs* -xrealpath.c libcdio-f9bd26c libcdio-c742eed
realpath.cは、字下げが修正されただけなので、除外しています。
paranoiaheaders = cdda.h の所は、
include/cdio/Makefile.am のdist_libcdioinclude_HEADERS のリストの中にも「cdtext.h」がダブっていて、make installの時にエラーになったので修正しました。
paranoiaheaders か、dist_libcdioinclude_HEADERS のリストのどちらかを修正すれば良いと思います。
cdtext.hの件
僕...makeまでの確認で、make installまでは確認してませんでしたorz
申し訳ありませんでした。
diffコマンドありがとうございます。
何かで差分を取る時に使いたいと思います。