2007年07月31日

libgsmのコンパイル&インストール

libgsmは、以下の場所にあります。
GSM 06.10 lossy speech compression
http://kbs.cs.tu-berlin.de/~jutta/toast.html

2010/01/25 追記
サイトはこちらへ移転していました。
ソースコードもダウンロードできます。
http://www.quut.com/gsm/

- free sourcecode から、
gsm-1.0.16.tar.gzを、適当なディレクトリに保存します。

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

Makefileを、以下のように修正します。
74行目
修正前) INSTALL_ROOT =
修正後) INSTALL_ROOT = /mingw

83行目
修正前) GSM_INSTALL_INC = $(GSM_INSTALL_ROOT)/inc
修正後) GSM_INSTALL_INC = $(GSM_INSTALL_ROOT)/include

上記の修正を手動でするか、以下のパッチを適用します。
$ patch -p1 < gsm-makefile.diff


以上の修正が終わったら、
$ make
$ make gsminstall

以上で終了です。


【補足】
makeの時に以下のようなエラーが出ますが、libgsm.aまではmake出来ているので、とりあえず今は無視します。
というか、解決できませんでした。
./src/toast.o:toast.c:(.text+0xcfc): undefined reference to `fchmod'
./src/toast.o:toast.c:(.text+0xd40): undefined reference to `fchown'
collect2: ld returned 1 exit status
make: *** [bin/toast] Error 1

2010/04/12 追記
fchmodとfchown関連のエラー対処用のパッチを作成しました。(Pochiさん情報)

以下のようにパッチを適用してください。
$ patch -p1 < gsm-toast.diff

このパッチにより「toast.exe」などのツールが出来上がるようになります。
FFmpegにはlibgsm関連しか使用しませんので、ツールが必要な方はパッチを適用してください。

【更新履歴】を見る
posted by あべちん at 21:53 | Comment(13) | TrackBack(0) | FFmpeg追加ライブラリ
この記事へのコメント
make installをするときは、
最初にmakeではなくmake -tで各ファイルに
タッチしておくと強引ですができそうです。

makeでやると最初の
src/code.o
で止まりました。
Posted by Kazuki Ashiya at 2009年02月15日 00:14
gsm-1.0.12.tar.gz
同じアーカイブでやったはずなのに異なる結果でした。
前の人同様、2個目のcコンパイルでコケる。
当座、以下修正で通りましたけど、同バージョンなのに中身違うとかあるんですかね。。。

46行目
修正前) CC = gcc -ansi -pedantic
修正後) CC = gcc -pedantic

ansi非対応コードかよ。。。_| ̄|○
Posted by みなと at 2009年02月15日 20:13
ほんとだ。-ansiを消したら通りました。

こちらではmake -iで、エラーが出ても止めずに強制的にやりました。

にしても、アーカイブの最終更新が2000年より前ですから、もう作り直す気はないのかもしれませんね。となると、このバグは直らないのかなぁ…。
Posted by Kazuki Ashiya at 2009年02月15日 21:16
ちょっと間違い。
2007年でした。
Posted by Kazuki Ashiya at 2009年02月15日 21:17
Kazuki Ashiyaさん、みなとさん、こんにちは。管理人です。

MinGWのページから、MinGW Runtimeを以下の最新版にアップデートすると、-ansi -pedanticでもコンパイル出来ますよ。
mingwrt-3.15.2-mingw32-dev.tar.gz
mingwrt-3.15.2-mingw32-dll.tar.gz

その他にも、win32api、binutils、sh、makeなども最新版にしておいた方が良いかもしれません。
Posted by あべちん at 2009年02月15日 23:07
ホントだ。

あれ…?Runtimeは一度新しくしたはずなのになあ。
Posted by Kazuki Ashiya at 2009年02月17日 18:33
ubuntu 上で MinGW でのクロスビルドにチャレンジ中です。
fchown 参照エラーは inc/config.h の HAS_FCHOWN, HAS_FCHMOD, HAS_CHOWN をコメントアウトすれば取り敢えず無くなります。
Posted by Pochi at 2010年04月12日 16:27
Pochiさん、こんにちは。管理人です。

情報ありがとうございました。
おかげさまで、解決できずに長らく放置していた問題が解決しました!

そんなところに問題があったとは盲点でした…。

記事に追記しておきます。
ありがとうございました。
Posted by あべちん at 2010年04月12日 23:15
Posted by X5-452 at 2011年04月25日 19:52
X5-452さん、こんにちは。管理人です。

元のソースは変わっていないみたいなので、
libgsm-1.0.13/debian/patches
にあるパッチを当てれば良いんでしょうか?

時間がある時に試してみます。
Posted by あべちん at 2011年04月27日 14:27
はじめまして。参考にさせていただいています。
ffmpegのconfigコマンドを実行したとき、ERROR: libgsm not foundとなってしまいます。
Posted by shouichi_M3 at 2011年05月18日 16:08
shouichi_M3さん

ffmpeg本体にffmpeg-20110516.diffをあてる場合↓
$ cd gsm-*
$ make
$ install -m 644 lib/libgsm.a /mingw/lib/
$ install -m 644 inc/gsm.h /mingw/include/

ffmpeg本体にffmpeg-20110516.diffをあてない場合↓
$ cd gsm-*
$ make
$ install -m 644 lib/libgsm.a /mingw/lib/
$ mkdir -p /mingw/include/gsm/
$ install -m 644 inc/gsm.h /mingw/include/gsm/

※ gsm-makefile.diffはあてなくてOK
Posted by X5-452 at 2011年05月18日 23:24
クロス・コンパイルの場合はディレクトリに気をつけて。

/mingw/

/mingw/i686-pc-mingw32/
/mingw/x86_64-w64-mingw32/
Posted by X5-452 at 2011年05月18日 23:30
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

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


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

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