http://xiph.org/
左の方の、Downloadsから、
http://xiph.org/downloads/
libogg-1.1.4.tar.gz
libvorbis-1.2.3.tar.gz
libtheora-1.1.1.tar.bz2
を、適当なディレクトリに保存します。
(1) libogg
MSYSで、ファイルを保存したディレクトリに移動し、
$ tar xzf libogg-1.1.4.tar.gz
$ cd libogg-1.1.4
$ ./configure --prefix=/mingw
$ make
$ make install
(2) libvorbis
MSYSで、ファイルを保存したディレクトリに移動し、
$ tar xzf libvorbis-1.2.3.tar.gz
$ cd libvorbis-1.2.3
267行目に、-loggを追加
libvorbisfile_la_LIBADD = libvorbis.la -logg
$ ./configure --prefix=/mingw
$ make
$ make install
libvorbisencとlibvorbisfileのインストールの時にエラーでストップしてしまう場合は、もう1回「make install」すればインストーできます。
(3) libtheora
$ tar xzf libtheora-1.0beta2.tar.gz
$ cd libtheora-1.0beta2
22行目をコメントアウト
/*typedef unsigned long int ogg_uint64_t;*/
$ tar xzf libtheora-1.0beta3.tar.gz
$ cd libtheora-1.0beta3
70行目に以下の1行を追加。
#include <stddef.h>
MSYSで、ファイルを保存したディレクトリに移動し、
$ cd libtheora-1.0beta3
$ tar xjf libtheora-1.1.1.tar.bz2
$ cd libtheora-1.1.1
そのまま、
$ ./configure --prefix=/mingw
$ make
$ make install
以上で終了です。
【更新履歴】を見る
修正お願いします
./configure --prefix=/mingw
とすると
*** Could not run Ogg test program, checking why...
*** The test program failed to compile or link. See the file config.log for the
*** exact error that occured. This usually means Ogg was incorrectly installed
*** or that you have moved Ogg since it was installed.
configure: error:
となってしまいます。liboggはコンパイル/インストールできているようなのですが、何が悪いのでしょう。初心者的な質問ですみません。
管理人さんではありませんが、コメントしてみます。
liboggのインストール先は/mingwになっていますか?
ls /mingw/include/ogg/
でogg.hなどのファイルが見つかるでしょうか?
また
/mingw/lib/libogg.a
/mingw/lib/libogg.la
はありますか?
liboggのconfigureのときにprefixを指定していない場合、
/usr/local/include/ogg
/usr/local/lib/
にインストールされていると思います。
その場合には、libtheoraのconfigureにその場所を知らせてあげないといけません。
--with-ogg=/usr/local を指定してみるといいかも知れません。
ただ先にビルドしているであろうlibvorbisで問題がなかったのなら、この可能性は低いのかな?
ls /mingw/include/ogg/
でogg.hなどのファイルが見つかるでしょうか?→見つかります。
/mingw/lib/libogg.a
/mingw/lib/libogg.la
はあります。
ほかに原因があるのでしょうか…。
config.logの末尾のエラーを見れば、原因は分かると思うのですが、、。
ところでpkg-configはお使いになられてますか?
お使いの場合、pkg-config --cflags --libs ogg
は正しく結果を返すでしょうか?
pkg-configはコンパイルしようとしたのですが、うまくいきませんでした。なかなか難しいですね。
## confdefs.h. ##
## ----------- ##
#define PACKAGE_NAME "libtheora"
#define PACKAGE_TARNAME "libtheora"
#define PACKAGE_VERSION "1.0"
#define PACKAGE_STRING "libtheora 1.0"
#define PACKAGE_BUGREPORT ""
#define PACKAGE "libtheora"
#define VERSION "1.0"
#define STDC_HEADERS 1
#define HAVE_SYS_TYPES_H 1
#define HAVE_SYS_STAT_H 1
#define HAVE_STDLIB_H 1
#define HAVE_STRING_H 1
#define HAVE_MEMORY_H 1
#define HAVE_STRINGS_H 1
#define HAVE_INTTYPES_H 1
#define HAVE_STDINT_H 1
#define HAVE_UNISTD_H 1
#define USE_ASM
#define OC_X86ASM
configure: exit 1
失敗例
configure:21013: checking for Ogg
configure:21058: gcc -o conftest.exe -Wall -Wno-parentheses -O3 -fforce-addr -fomit-frame-pointer -finline-functions -funroll-loops conftest.c -logg >&5
conftest.c:26:21: ogg/ogg.h: No such file or directory
.
skip
.
configure:21140: gcc -o conftest.exe -Wall -Wno-parentheses -O3 -fforce-addr -fomit-frame-pointer -finline-functions -funroll-loops conftest.c -logg >&5
conftest.c:24:21: ogg/ogg.h: No such file or directory
.
.
この場合は、単純にoggのヘッダファイルが見つからないために、エラーがでています。そのチェック用のテストプログラムもログに記録されています。
(conftest.c:24:21: ogg/ogg.h: No such file or directoryより下にあります。)
チェックする箇所はエラーメッセージ(このケースではNo such file or directory)です。
あとpkg-configはglibに依存しているので自力コンパイルは少し大変かもです。
なくてもコンパイルできるので、とりあえず気にしないでください。
conftest.c:26:21: error: ogg/ogg.h: No such file or directory
configure:21060: $? = 1
とありますので、ヘッダーファイルが見つからないのですね。
ogg以下を探しているようなのですが、これはどうすればよいのでしょう。すみません。MinGWだとか、使い始めて2日目でして…。
ogg.hは私の環境では
ホーム以下
/libogg-1.1.3/include/ogg
にあります。
>ls /mingw/include/ogg/
でogg.hなどのファイルが見つかるでしょうか?→見つかります。
>/mingw/lib/libogg.a
>/mingw/lib/libogg.la
>はあります。
と書かれていたようですが、、、。
上記にはないのでしょうか?
あるけれど、正しくインストールされていないのかな?
ホーム以下/libogg-1.1.3/include/ogg
とは
/home/username/libogg-1.1.3/include/ogg
にあるっていうことでしょうか?
もしそうなら、コンパイルはしたけれど、liboggのインストールをし忘れているということはありませんか?
/home/username/libogg-1.1.3でmake installを実行してますか?
もし既にインストールしていても、再度実行してみてください。
その際、インストール先が表示されるはずなので、どこにインストールされているか確認もできますから。
/mingw/以下にインストールされているようなら、libvorbisもlibtheoraも普通に./configureすればOKのはずです。
もし無理なら、./configure --with-ogg=/mingwを試してみるのも一つの手かと思います。
もし/usr/local以下など別の場所にインストールされているなら、./configure --with-ogg=/usr/localといった感じでオプション指定してみてください。
./configure --with-ogg=/mingw
で通りました。ただ、ffmpeg本体のconfigureで問題を起こしております。どうやらlibswscaleがないようで、configureを行うと、知らないオプションだとエラーを返します。
あと、CPUがPhenom IIですが、これはAthlon64で指定してよいものかというのもわかりません。
なんかお恥ずかしい限りです…。
ひょっとしたらMSYSとMinGWのインストールで問題か、bashのバージョンの問題かな?
あとlibswscaleの問題は、最近のffmpegのソースでは--enable-swscaleをつけて./configureするとエラーが出るようになりました。
指定をしなくても、自動で検出してくれるようです。
Athlon64の指定はCFLAGSの-mtuneなどの指定だと思いますが、Phenom IIはSSE4aまで対応しているみたいなので、gcc-4.3.3なら、amdfam10またはbarcelonaになるのかな?
詳しくは下記をどうぞ。
http://gcc.gnu.org/onlinedocs/gcc-4.3.3/gcc/i386-and-x86_002d64-Options.html#i386-and-x86_002d64-Options
以下はあくまで個人的見解ですがご参考まで。
-marchや-mtuneでご自身のPCにあった最適化を行うと、確かにパフォーマンスがあがる場合が多いです。
ただ新しめのCPUの場合は必ずしもパフォーマンスアップになるとは限りません。
プログラムにもよると思いますが、i686やpentium4などを指定するほうがパフォーマンスが良い場合もあります。(最適化のアプローチ(アルゴリズム)が枯れているから?)
なので、ffmpegのビルドに成功したら、最適化オプションを変更したffmpegを複数用意して、パフォーマンスを計測してみるのもいいかも知れませんよ。
FAAD test failed.
となります。configure.logをみますと、エラーが出ているあたりは、
conftest.c:2: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'me'
configure:2815: $? = 1
configure: failed program was:
| #ifndef __cplusplus
| choke me
| #endif
となっているようです。
MSYSがMinGWの場所を分かっていないのかな。
mountコマンドを使って、/mingwはでてくるでしょうか?
mountを実行すると、
c:\mingw on /mingw type user (binmode)
といった感じで表示されると思います。
それとgccのバージョンはなんでしょうか?gcc --versionで表示されます。
とりあえず、いえるのはoggのヘッダが見つからなかったことも考えると、MSYSのインストールでMinGWの場所を知らせなかったとか、gcc-4.3系を追加してインストールしたと思うのですが、その関連かなぁとか、、推測でしかありませんが。
とりあえずの試せる回避策はthoeraの時と同じで、ヘッダやライブラリの場所をconfigureに教えてあげることです。指定方法は
./configure --extra-cflags="-I/mingw/include" --extra-ldflags="-L/mingw/lib"
といった形でしょうか。
--extra-cflagsなどのオプションがないconfigureの場合は、
CPPFLAGS=-I/mingw/include LDFLAGS=-L/mingw/lib ./configure
といった形で指定できる場合が多いです。(CPPFLAGSではなくCFLAGSの場合もあるかも。)
それでmakeも出来たのですが、途中でsegmentation faultで落ちました。そもそもエラー表示が日本語で出ているようなのですが文字化けして読めないので、MinGWの環境も何か直さないといけないんだと思います。下のような感じです。
libavcodec/pthread.c:24 、ォ、・include 、オ、・ソ・ユ・。・、・・貭ソスナ include 、ォ、鬢ホハンクタャヘュアラ、ネ、ハ、・ヌ、キ、遉ヲ:
:
C:/msys/1.0/mingw/include/pthread.h:213:5: キルケ・ "HAVE_CONFIG_H" 、マト・チ、オ、・ニ、、、゙、サ、・In file included from libavcodec/pthread.c:24:
C:/msys/1.0/mingw/include/pthread.h:1: internal compiler error: Segmentation fault
エーチエ、ハ・ミ・ーハテ、ニイシ、オ、、。」
ナャタレ、ハ、鬢ミ・ラ・・ラ・チサ・ケク螟ホ・ス。シ・ケ、ト、ア、ニ、ッ、タ、オ、、。」
<http://www.mingw.org/bugs.shtml> 、ォ、・ミハヒ。、ャス、、ニ、「、熙゙、ケ。」
make: *** [libavcodec/pthread.o] Error 1
/etc/fstabの設定も気になります。私の環境では、
c:/mingw /mingw
としています。
この点を気にしているのは、/mingw/includeが
c:/mingw/includeになっているかどうかということなんです。
たとえばc:/mingw/include/oggにヘッダがあるかどうかを確認してみてください。
ひょっとしたらですが、c:/msys/1.0/mingw/include/以下にヘッダやライブラリがあるのではないかと気になっています。
あと日本語のエラー表示の件ですが、個人的には日本語でエラー表示がでた記憶がないのですが、一応こういうこともできるということで、ご参考までに書いてみます。
ターミナルのrxvtは日本語入力は無理ですが、表示はできるようです。C:\msys\1.0\msys.batの中の以下の行
start rxvt -backspacekey -sl 2500 -fg %FGCOLOR% -bg %BGCOLOR% -sr -fn Courier-12 -tn msys -geometry 80x25 -e /bin/sh --login -i
ここのCourier-12をTerminal-14などに変更してみてください。
msys-1.0ならこれで表示はできると思います。
あとはmsys.batを編集して、rxvtを無効にして、コピー&ペーストなどができなくなりますが、shを利用する形にする方法もあります。
if EXIST rxvt.exe goto startrxvt
の行を
rem if EXIST rxvt.exe goto startrxvt
といった形でコメントアウトします。
あと、~/.profileにエイリアスを設定しておけば、lsコマンドも日本語フォルダなどの表示ができます。
alias ls='ls --show-control-chars --color=auto'
--color=autoはなくてもかまいません。
あとSEGVが発生しているのが気になるところですが、たとえばビルドする際にnice makeとかnice ./configureなど、niceコマンドでプロセスの優先度を下げてみてはいかがでしょうか?
こちらの環境では高負荷時にSEGVする現象が起きる傾向があったので。
ひょっとしたら安定してくれるかも知れません。
/etc/fstab
には
c:mingw /mingw
とあるのですが、おっしゃるとおり各種ヘッダファイルなどは
c:/msys/1.0/mingw/include/
に存在します。fstabは自分では編集したこともなく、また自分でmountコマンドを打ったこともありません。fstabにこのようにかかれていても自動ではマウントされないのでしょうか。
日本語表示については、Terminal-14に変更しました。フォントが変わったことはわかりますが、makeをしたときのエラーメッセージは化けています。日本語ではないのかな…。
nice makeでも同じ結果となります。
/etc/fstabについては、
c:mingw /mingw
ではなく、
c:\mingw /mingw
だと思うのですが、タイプミスかな?
あと、mountコマンドはオプションなしにmountと打ってみてください。
現在、マウントされているフォルダの情報が表示されます。
その中に、/mingwがあるかどうか確認してみるといいと思います。
正常に/mingwがマウントされている状態になったら、
c:/msys/1.0/mingw/以下のフォルダは、c:/mingw以下に移動することになろうかと思います。
何度もありがとうございました。
再インストール、再ビルドとは大変でしたね。
でも無事ビルドできたようで、なによりです^^