doesNotRecognizeBlog
Apple Lossless Audio Codec ためしに FreeBSD でビルドしてみたら makefile を少し修正するだけでビルドできてしまってつまらなかった。 http://alac.macosforge.org/

SVNリポジトリからチェックアウト

/Users/mtakagi/Desktop% svn co http://svn.macosforge.org/repository/alac/trunk alac

試しに FreeBSD で make

[mtakagi@freebsd-5850 ~]# ls -a /home/mtakagi/
.       .cshrc      .lesshst    .login_conf .mailrc     .rhosts     alac
..      .history    .login      .mail_aliases   .profile    .shrc
[mtakagi@freebsd-5850 ~]# ls -a /home/mtakagi/alac/
.               .svn                ReadMe.txt
..              ALACMagicCookieDescription.txt  codec
.DS_Store           LICENSE             convert-utility
[mtakagi@freebsd-5850 ~]# cd /home/mtakagi/alac/
[mtakagi@freebsd-5850 alac]# cd convert-utility/
[mtakagi@freebsd-5850 convert-utility]# make
g++ -I ../codec -g -O3 -c main.cpp
In file included from ../codec/ALACEncoder.h:29,
                 from main.cpp:26:
../codec/ALACAudioTypes.h:64:32: warning: multi-character character constant
../codec/ALACAudioTypes.h:65:28: warning: multi-character character constant
../codec/ALACAudioTypes.h:154:22: warning: multi-character character constant
../codec/ALACAudioTypes.h:182:26: warning: multi-character character constant
In file included from main.cpp:31:
CAFFileALAC.h:69:33: warning: multi-character character constant
CAFFileALAC.h:75:40: warning: multi-character character constant
CAFFileALAC.h:76:34: warning: multi-character character constant
CAFFileALAC.h:77:37: warning: multi-character character constant
CAFFileALAC.h:78:31: warning: multi-character character constant
CAFFileALAC.h:79:35: warning: multi-character character constant
CAFFileALAC.h:80:34: warning: multi-character character constant
main.cpp:134:30: warning: multi-character character constant
main.cpp:134:57: warning: multi-character character constant
main.cpp:167:35: warning: multi-character character constant
main.cpp:206:24: warning: multi-character character constant
main.cpp:216:28: warning: multi-character character constant
main.cpp:225:26: warning: multi-character character constant
main.cpp:349:14: warning: multi-character character constant
main.cpp:360:26: warning: multi-character character constant
main.cpp:373:14: warning: multi-character character constant
main.cpp:618:27: warning: multi-character character constant
main.cpp:684:27: warning: multi-character character constant
main.cpp:716:23: warning: multi-character character constant
main.cpp:724:35: warning: multi-character character constant
g++ -I ../codec -g -O3 -c CAFFileALAC.cpp
In file included from CAFFileALAC.h:30,
                 from CAFFileALAC.cpp:20:
../codec/ALACAudioTypes.h:64:32: warning: multi-character character constant
../codec/ALACAudioTypes.h:65:28: warning: multi-character character constant
../codec/ALACAudioTypes.h:154:22: warning: multi-character character constant
../codec/ALACAudioTypes.h:182:26: warning: multi-character character constant
In file included from CAFFileALAC.cpp:20:
CAFFileALAC.h:69:33: warning: multi-character character constant
CAFFileALAC.h:75:40: warning: multi-character character constant
CAFFileALAC.h:76:34: warning: multi-character character constant
CAFFileALAC.h:77:37: warning: multi-character character constant
CAFFileALAC.h:78:31: warning: multi-character character constant
CAFFileALAC.h:79:35: warning: multi-character character constant
CAFFileALAC.h:80:34: warning: multi-character character constant
CAFFileALAC.cpp:41:18: warning: multi-character character constant
CAFFileALAC.cpp:305:18: warning: multi-character character constant
CAFFileALAC.cpp:343:18: warning: multi-character character constant
CAFFileALAC.cpp:387:18: warning: multi-character character constant
CAFFileALAC.cpp:417:18: warning: multi-character character constant
(cd ../codec; make)
g++ -I . -g -O3 -c EndianPortable.c
g++ -I . -g -O3 -c ALACBitUtilities.c
g++ -I . -g -O3 -c ALACDecoder.cpp
In file included from ALACDecoder.h:34,
                 from ALACDecoder.cpp:28:
ALACAudioTypes.h:64:32: warning: multi-character character constant
ALACAudioTypes.h:65:28: warning: multi-character character constant
ALACAudioTypes.h:154:22: warning: multi-character character constant
ALACAudioTypes.h:182:26: warning: multi-character character constant
g++ -I . -g -O3 -c ALACEncoder.cpp
In file included from ALACEncoder.h:29,
                 from ALACEncoder.cpp:33:
ALACAudioTypes.h:64:32: warning: multi-character character constant
ALACAudioTypes.h:65:28: warning: multi-character character constant
ALACAudioTypes.h:154:22: warning: multi-character character constant
ALACAudioTypes.h:182:26: warning: multi-character character constant
ALACEncoder.cpp:48:36: warning: multi-character character constant
g++ -I . -g -O3 -c ag_dec.c
In file included from ag_dec.c:31:
ALACAudioTypes.h:64:32: warning: multi-character character constant
ALACAudioTypes.h:65:28: warning: multi-character character constant
ALACAudioTypes.h:154:22: warning: multi-character character constant
ALACAudioTypes.h:182:26: warning: multi-character character constant
g++ -I . -g -O3 -c ag_enc.c
In file included from ag_enc.c:32:
ALACAudioTypes.h:64:32: warning: multi-character character constant
ALACAudioTypes.h:65:28: warning: multi-character character constant
ALACAudioTypes.h:154:22: warning: multi-character character constant
ALACAudioTypes.h:182:26: warning: multi-character character constant
g++ -I . -g -O3 -c dp_dec.c
g++ -I . -g -O3 -c dp_enc.c
g++ -I . -g -O3 -c matrix_dec.c
In file included from matrix_dec.c:30:
ALACAudioTypes.h:64:32: warning: multi-character character constant
ALACAudioTypes.h:65:28: warning: multi-character character constant
ALACAudioTypes.h:154:22: warning: multi-character character constant
ALACAudioTypes.h:182:26: warning: multi-character character constant
g++ -I . -g -O3 -c matrix_enc.c
In file included from matrix_enc.c:30:
ALACAudioTypes.h:64:32: warning: multi-character character constant
ALACAudioTypes.h:65:28: warning: multi-character character constant
ALACAudioTypes.h:154:22: warning: multi-character character constant
ALACAudioTypes.h:182:26: warning: multi-character character constant
ar rcs libalac.a EndianPortable.o  ALACBitUtilities.o  ALACDecoder.o  ALACEncoder.o  ag_dec.o  ag_enc.o  dp_dec.o  dp_enc.o  matrix_dec.o  matrix_enc.o
g++ -Wall -L../codec -lalac main.o  CAFFileALAC.o -o alacconvert
main.o(.text+0x452): In function `EncodeALAC(__sFILE*, __sFILE*, AudioFormatDescription, AudioFormatDescription, int)':
/home/mtakagi/alac/convert-utility/main.cpp:400: undefined reference to `ALACEncoder::ALACEncoder()'
main.o(.text+0x51a):/home/mtakagi/alac/convert-utility/main.cpp:413: undefined reference to `ALACEncoder::GetMagicCookieSize(unsigned int)'
main.o(.text+0x545):/home/mtakagi/alac/convert-utility/main.cpp:415: undefined reference to `ALACEncoder::GetMagicCookie(void*, unsigned int*)'
main.o(.text+0x6e4):/home/mtakagi/alac/convert-utility/main.cpp:487: undefined reference to `Swap24'
main.o(.text+0x8ec):/home/mtakagi/alac/convert-utility/main.cpp:472: undefined reference to `Swap16'
main.o(.text+0x91a):/home/mtakagi/alac/convert-utility/main.cpp:480: undefined reference to `Swap32'
main.o(.text+0xa08):/home/mtakagi/alac/convert-utility/main.cpp:540: undefined reference to `Swap24'
main.o(.text+0xba0):/home/mtakagi/alac/convert-utility/main.cpp:525: undefined reference to `Swap16'
main.o(.text+0xbcc):/home/mtakagi/alac/convert-utility/main.cpp:533: undefined reference to `Swap32'
main.o(.text+0x10c8): In function `DecodeALAC(__sFILE*, __sFILE*, AudioFormatDescription, AudioFormatDescription, int, unsigned int)':
/home/mtakagi/alac/convert-utility/main.cpp:603: undefined reference to `ALACDecoder::ALACDecoder()'
main.o(.text+0x1117):/home/mtakagi/alac/convert-utility/main.cpp:612: undefined reference to `ALACDecoder::Init(void*, unsigned int)'
main.o(.text+0x1132):/home/mtakagi/alac/convert-utility/main.cpp:615: undefined reference to `BitBufferInit'
main.o(.text+0x131e):/home/mtakagi/alac/convert-utility/main.cpp:665: undefined reference to `ALACDecoder::Decode(BitBuffer*, unsigned char*, unsigned int, unsigned int, unsigned int*)'
main.o(.text+0x13d5):/home/mtakagi/alac/convert-utility/main.cpp:682: undefined reference to `BitBufferReset'
main.o(.text+0x146d):/home/mtakagi/alac/convert-utility/main.cpp:704: undefined reference to `ALACDecoder::~ALACDecoder()'
CAFFileALAC.o(.text+0x372): In function `GetCAFFdescFormat(__sFILE*, AudioFormatDescription*)':
/home/mtakagi/alac/convert-utility/CAFFileALAC.cpp:420: undefined reference to `Swap32BtoN'
CAFFileALAC.o(.text+0x380):/home/mtakagi/alac/convert-utility/CAFFileALAC.cpp:421: undefined reference to `Swap32BtoN'
CAFFileALAC.o(.text+0x38e):/home/mtakagi/alac/convert-utility/CAFFileALAC.cpp:422: undefined reference to `SwapFloat64BtoN'
CAFFileALAC.o(.text+0x39b):/home/mtakagi/alac/convert-utility/CAFFileALAC.cpp:423: undefined reference to `Swap32BtoN'
CAFFileALAC.o(.text+0x3a9):/home/mtakagi/alac/convert-utility/CAFFileALAC.cpp:424: undefined reference to `Swap32BtoN'
CAFFileALAC.o(.text+0x3b7):/home/mtakagi/alac/convert-utility/CAFFileALAC.cpp:425: undefined reference to `Swap32BtoN'
CAFFileALAC.o(.text+0x3de):/home/mtakagi/alac/convert-utility/CAFFileALAC.cpp:443: undefined reference to `Swap32BtoN'
CAFFileALAC.o(.text+0x87f): In function `WriteCAFFpaktChunkHeader(__sFILE*, port_CAFPacketTableHeader*, unsigned int)':
/home/mtakagi/alac/convert-utility/CAFFileALAC.cpp:167: undefined reference to `Swap64NtoB'
CAFFileALAC.o(.text+0x896):/home/mtakagi/alac/convert-utility/CAFFileALAC.cpp:168: undefined reference to `Swap64NtoB'
CAFFileALAC.o(.text+0x8a7):/home/mtakagi/alac/convert-utility/CAFFileALAC.cpp:169: undefined reference to `Swap32NtoB'
CAFFileALAC.o(.text+0x8b5):/home/mtakagi/alac/convert-utility/CAFFileALAC.cpp:170: undefined reference to `Swap32NtoB'
CAFFileALAC.o(.text+0xcea): In function `WriteCAFFdescChunk(__sFILE*, AudioFormatDescription)':
/home/mtakagi/alac/convert-utility/CAFFileALAC.cpp:85: undefined reference to `SwapFloat64NtoB'
CAFFileALAC.o(.text+0xcf5):/home/mtakagi/alac/convert-utility/CAFFileALAC.cpp:86: undefined reference to `Swap32NtoB'
CAFFileALAC.o(.text+0xd03):/home/mtakagi/alac/convert-utility/CAFFileALAC.cpp:87: undefined reference to `Swap32NtoB'
CAFFileALAC.o(.text+0xd0e):/home/mtakagi/alac/convert-utility/CAFFileALAC.cpp:88: undefined reference to `Swap32NtoB'
CAFFileALAC.o(.text+0xd19):/home/mtakagi/alac/convert-utility/CAFFileALAC.cpp:89: undefined reference to `Swap32NtoB'
CAFFileALAC.o(.text+0xd27):/home/mtakagi/alac/convert-utility/CAFFileALAC.cpp:90: undefined reference to `Swap32NtoB'
CAFFileALAC.o(.text+0xd35):/home/mtakagi/alac/convert-utility/CAFFileALAC.cpp:91: more undefined references to `Swap32NtoB' follow
*** Error code 1

Stop in /usr/home/mtakagi/alac/convert-utility.

undefined references で make がエラー
make clean で一旦生成物を削除

[mtakagi@freebsd-5850 convert-utility]# make clean
rm main.o  CAFFileALAC.o alacconvert
[mtakagi@freebsd-5850 convert-utility]# cd ../codec/
[mtakagi@freebsd-5850 codec]# ls
.DS_Store       ALACDecoder.h       EndianPortable.h    dp_dec.c        matrix_dec.c
.svn            ALACDecoder.o       EndianPortable.o    dp_dec.o        matrix_dec.o
ALACAudioTypes.h    ALACEncoder.cpp     ag_dec.c        dp_enc.c        matrix_enc.c
ALACBitUtilities.c  ALACEncoder.h       ag_dec.o        dp_enc.o        matrix_enc.o
ALACBitUtilities.h  ALACEncoder.o       ag_enc.c        dplib.h         matrixlib.h
ALACBitUtilities.o  APPLE_LICENSE.txt   ag_enc.o        libalac.a
ALACDecoder.cpp     EndianPortable.c    aglib.h         makefile
[mtakagi@freebsd-5850 codec]# make clean
rm EndianPortable.o  ALACBitUtilities.o  ALACDecoder.o  ALACEncoder.o  ag_dec.o  ag_enc.o  dp_dec.o  dp_enc.o  matrix_dec.o  matrix_enc.o libalac.a

makefile を修正。$(LFLAGS) の位置を変えるだけ。

/Users/mtakagi/Desktop/alac/convert-utility% diff makefile.org makefile                       [~/Desktop/alac/convert-utility]
33c33
<    $(CC) $(LFLAGS) $(OBJS) -o alacconvert
---
>    $(CC) $(OBJS) -o alacconvert $(LFLAGS)

makefile を修正したらmake を実行。

[mtakagi@freebsd-5850 codec]# cd ../convert-utility/
[mtakagi@freebsd-5850 convert-utility]# make
g++ -I ../codec -g -O3 -c main.cpp
In file included from ../codec/ALACEncoder.h:29,
                 from main.cpp:26:
../codec/ALACAudioTypes.h:64:32: warning: multi-character character constant
../codec/ALACAudioTypes.h:65:28: warning: multi-character character constant
../codec/ALACAudioTypes.h:154:22: warning: multi-character character constant
../codec/ALACAudioTypes.h:182:26: warning: multi-character character constant
In file included from main.cpp:31:
CAFFileALAC.h:69:33: warning: multi-character character constant
CAFFileALAC.h:75:40: warning: multi-character character constant
CAFFileALAC.h:76:34: warning: multi-character character constant
CAFFileALAC.h:77:37: warning: multi-character character constant
CAFFileALAC.h:78:31: warning: multi-character character constant
CAFFileALAC.h:79:35: warning: multi-character character constant
CAFFileALAC.h:80:34: warning: multi-character character constant
main.cpp:134:30: warning: multi-character character constant
main.cpp:134:57: warning: multi-character character constant
main.cpp:167:35: warning: multi-character character constant
main.cpp:206:24: warning: multi-character character constant
main.cpp:216:28: warning: multi-character character constant
main.cpp:225:26: warning: multi-character character constant
main.cpp:349:14: warning: multi-character character constant
main.cpp:360:26: warning: multi-character character constant
main.cpp:373:14: warning: multi-character character constant
main.cpp:618:27: warning: multi-character character constant
main.cpp:684:27: warning: multi-character character constant
main.cpp:716:23: warning: multi-character character constant
main.cpp:724:35: warning: multi-character character constant
g++ -I ../codec -g -O3 -c CAFFileALAC.cpp
In file included from CAFFileALAC.h:30,
                 from CAFFileALAC.cpp:20:
../codec/ALACAudioTypes.h:64:32: warning: multi-character character constant
../codec/ALACAudioTypes.h:65:28: warning: multi-character character constant
../codec/ALACAudioTypes.h:154:22: warning: multi-character character constant
../codec/ALACAudioTypes.h:182:26: warning: multi-character character constant
In file included from CAFFileALAC.cpp:20:
CAFFileALAC.h:69:33: warning: multi-character character constant
CAFFileALAC.h:75:40: warning: multi-character character constant
CAFFileALAC.h:76:34: warning: multi-character character constant
CAFFileALAC.h:77:37: warning: multi-character character constant
CAFFileALAC.h:78:31: warning: multi-character character constant
CAFFileALAC.h:79:35: warning: multi-character character constant
CAFFileALAC.h:80:34: warning: multi-character character constant
CAFFileALAC.cpp:41:18: warning: multi-character character constant
CAFFileALAC.cpp:305:18: warning: multi-character character constant
CAFFileALAC.cpp:343:18: warning: multi-character character constant
CAFFileALAC.cpp:387:18: warning: multi-character character constant
CAFFileALAC.cpp:417:18: warning: multi-character character constant
(cd ../codec; make)
g++ -I . -g -O3 -c EndianPortable.c
g++ -I . -g -O3 -c ALACBitUtilities.c
g++ -I . -g -O3 -c ALACDecoder.cpp
In file included from ALACDecoder.h:34,
                 from ALACDecoder.cpp:28:
ALACAudioTypes.h:64:32: warning: multi-character character constant
ALACAudioTypes.h:65:28: warning: multi-character character constant
ALACAudioTypes.h:154:22: warning: multi-character character constant
ALACAudioTypes.h:182:26: warning: multi-character character constant
g++ -I . -g -O3 -c ALACEncoder.cpp
In file included from ALACEncoder.h:29,
                 from ALACEncoder.cpp:33:
ALACAudioTypes.h:64:32: warning: multi-character character constant
ALACAudioTypes.h:65:28: warning: multi-character character constant
ALACAudioTypes.h:154:22: warning: multi-character character constant
ALACAudioTypes.h:182:26: warning: multi-character character constant
ALACEncoder.cpp:48:36: warning: multi-character character constant
g++ -I . -g -O3 -c ag_dec.c
In file included from ag_dec.c:31:
ALACAudioTypes.h:64:32: warning: multi-character character constant
ALACAudioTypes.h:65:28: warning: multi-character character constant
ALACAudioTypes.h:154:22: warning: multi-character character constant
ALACAudioTypes.h:182:26: warning: multi-character character constant
g++ -I . -g -O3 -c ag_enc.c
In file included from ag_enc.c:32:
ALACAudioTypes.h:64:32: warning: multi-character character constant
ALACAudioTypes.h:65:28: warning: multi-character character constant
ALACAudioTypes.h:154:22: warning: multi-character character constant
ALACAudioTypes.h:182:26: warning: multi-character character constant
g++ -I . -g -O3 -c dp_dec.c
g++ -I . -g -O3 -c dp_enc.c
g++ -I . -g -O3 -c matrix_dec.c
In file included from matrix_dec.c:30:
ALACAudioTypes.h:64:32: warning: multi-character character constant
ALACAudioTypes.h:65:28: warning: multi-character character constant
ALACAudioTypes.h:154:22: warning: multi-character character constant
ALACAudioTypes.h:182:26: warning: multi-character character constant
g++ -I . -g -O3 -c matrix_enc.c
In file included from matrix_enc.c:30:
ALACAudioTypes.h:64:32: warning: multi-character character constant
ALACAudioTypes.h:65:28: warning: multi-character character constant
ALACAudioTypes.h:154:22: warning: multi-character character constant
ALACAudioTypes.h:182:26: warning: multi-character character constant
ar rcs libalac.a EndianPortable.o  ALACBitUtilities.o  ALACDecoder.o  ALACEncoder.o  ag_dec.o  ag_enc.o  dp_dec.o  dp_enc.o  matrix_dec.o  matrix_enc.o
g++ main.o  CAFFileALAC.o -o alacconvert -Wall -L../codec -lalac

今度はmake 成功。
alacconvert を実行してみる。

[mtakagi@freebsd-5850 convert-utility]# ./alacconvert 
Usage:
Encode:
        alacconvert <input wav or caf file> <output caf file>
Decode:
        alacconvert <input caf file> <output wav or caf file>

[mtakagi@freebsd-5850 convert-utility]# ls -l /home/mtakagi/STR0119.wav 
-rwxr-xr-x  1 mtakagi  mtakagi  7644716 Oct 28 08:40 /home/mtakagi/STR0119.wav
[mtakagi@freebsd-5850 convert-utility]# ./alacconvert /home/mtakagi/STR0119.wav /home/mtakagi/STR0119.caf
Input file: /home/mtakagi/STR0119.wav
Output file: /home/mtakagi/STR0119.caf
[mtakagi@freebsd-5850 convert-utility]# ls -l /home/mtakagi/STR0119.caf
-rw-r--r--  1 root  mtakagi  4416342 Oct 28 08:41 /home/mtakagi/STR0119.caf
[mtakagi@freebsd-5850 convert-utility]# 

WAVファイルをApple Lossless Audio Codec にエンコードできた。

  1. mtakagi posted this