2013-10-18 6 views
7

VAMPクイーンメアリー大学のプラグインは、BSDライセンスソフトウェアの素晴らしいコレクションです。これらのプラグインはすべて、Sonic Visualizerソフトウェア A plug Sdkのプラグインをビルドするための基礎になっています。iAMPにVAMPプラグインをコンパイルする方法ARMV7

OSX/Linux/Win32ターゲット用のプラグインをビルドできます。

クイック・マート大学詳細説明hereプラグインのアーキテクチャと上記の異なるプラットフォーム用のビルド方法。

JavaバージョンのjVampも利用できます。 Pythonラッパー。

iOSプラットフォームの構築方法は?

私は、MakefileをiOSに移植しようとしました。

は、まず私は、この方法でファイル

build/osx/Makefile.osx 

を変更:

CFLAGS := -O3 -ftree-vectorize -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk -arch x86_64 -I../vamp-plugin-sdk -I/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk/System/Library/Frameworks/Accelerate.framework/Frameworks/vecLib.framework/Headers/ -DUSE_PTHREADS 

CXXFLAGS := $(CFLAGS) 

LDFLAGS := -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk -arch x86_64 -lqm-dsp ../vamp-plugin-sdk/libvamp-sdk.a -framework Accelerate -lpthread -exported_symbols_list=vamp-plugin.list -install_name qm-vamp-plugins.a 

PLUGIN_EXT := .a 

include build/general/Makefile.inc 

そして、ここでの最初の問題は、サポートされていないアーキテクチャがあるということです

macbookproloreto:qm-vamp-plugins loreto$ make -f build/osx/Makefile.osx 
cc -O3 -ftree-vectorize -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk -arch x86_64 -I../vamp-plugin-sdk -I/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk/System/Library/Frameworks/Accelerate.framework/Frameworks/vecLib.framework/Headers/ -DUSE_PTHREADS -I. -I../qm-dsp -c -o g2cstubs.o g2cstubs.c 
c++ -O3 -ftree-vectorize -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk -arch x86_64 -I../vamp-plugin-sdk -I/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk/System/Library/Frameworks/Accelerate.framework/Frameworks/vecLib.framework/Headers/ -DUSE_PTHREADS -I. -I../qm-dsp -c -o plugins/AdaptiveSpectrogram.o plugins/AdaptiveSpectrogram.cpp 
In file included from plugins/AdaptiveSpectrogram.cpp:15: 
In file included from plugins/AdaptiveSpectrogram.h:18: 
In file included from ../vamp-plugin-sdk/vamp-sdk/Plugin.h:40: 
In file included from /usr/bin/../lib/c++/v1/string:430: 
In file included from /usr/bin/../lib/c++/v1/iosfwd:90: 
In file included from /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk/usr/include/wchar.h:70: 
In file included from /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk/usr/include/_types.h:27: 
In file included from /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk/usr/include/sys/_types.h:32: 
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk/usr/include/sys/cdefs.h:655:2: **error: Unsupported 
     architecture 
#error Unsupported architecture 
^** 

構築します。

ので、プラグインは、私が最初の1つを構築する必要がありましたSDKに依存します:私はOGG/VORBISライブラリなしLOGGライブラリを持っていないので

cd /Users/loreto/Projects/AUDIO/VAMP/vamp-plugin-sdk 
make -f build/Makefile.osx 

別のエラーが発生しました。そこで、HOST_LIBフラグの中のこれらの依存関係を削除して、Makefile.osxを少し修正しました。私はとにかくlibsndfileを続けなければならなかった:もちろん

macbookproloreto:vamp-plugin-sdk loreto$ ls -l *.a 
-rw-r--r-- 1 loreto staff 709840 17 Ott 23:56 libvamp-hostsdk.a 
-rw-r--r-- 1 loreto staff 183720 17 Ott 23:56 libvamp-sdk.a 

をこれらの静的LIBSはアーチx86_64版を対象としているので、私はのARMv7アーチを追加する必要があります。

HOST_LIBS  = ./libvamp-hostsdk.a -L../10.8/inst/lib -lsndfile -ldl 

だから私はここに静的ライブラリを構築することができました:その後

ARCHFLAGS = -mmacosx-version-min=$(MINVERSION) -arch x86_64 -arch armv7 

きれいにし、再び

macbookproloreto:vamp-plugin-sdk loreto$ make -f build/Makefile.osx clean 
macbookproloreto:vamp-plugin-sdk loreto$ make -f build/Makefile.osx 
c++ -mmacosx-version-min=10.8 -arch x86_64 -arch armv7 -O2 -Wall -I. -I../10.8/inst/include -fPIC -c -o src/vamp-sdk/PluginAdapter.o src/vamp-sdk/PluginAdapter.cpp 
In file included from src/vamp-sdk/PluginAdapter.cpp:37: 
In file included from ./vamp-sdk/PluginAdapter.h:40: 
In file included from /usr/include/c++/4.2.1/map:64: 
In file included from /usr/include/c++/4.2.1/bits/stl_tree.h:68: 
In file included from /usr/include/c++/4.2.1/bits/stl_algobase.h:65: 
In file included from /usr/include/c++/4.2.1/bits/c++config.h:41: 
In file included from /usr/include/c++/4.2.1/bits/os_defines.h:61: 
In file included from /usr/include/unistd.h:71: 
In file included from /usr/include/_types.h:27: 
In file included from /usr/include/sys/_types.h:33: 
/usr/include/machine/_types.h:34:10: fatal error: 'arm/_types.h' file not found 
#include "arm/_types.h" 
     ^
1 error generated. 
make: *** [src/vamp-sdk/PluginAdapter.o] Error 1 
をコンパイル

アームの型定義が見つかりませんでした!うわー、それを

make -f build/Makefile.osx sdkstatic 

ARCHFLAGS = -mmacosx-version-min=$(MINVERSION) -arch armv7 
CFLAGS   = $(ARCHFLAGS) -fPIC --sysroot=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk -isystem /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk/usr/include/ 
CXXFLAGS  = $(ARCHFLAGS) -O2 -Wall -I. -fPIC 
CPPFLAGS  ="-pipe -no-cpp-precomp -I/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk/usr/include/" -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk 

その後、静的ターゲットを作る:ここでの問題は、右のパスは大丈夫だが、再びMakefile.osxでこれを修正しましょう

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk/usr/include/arm/_types.h 

だったということです働いた!私はiOS用のvampホストsdk .aを持っています!(私はのは言わせて持っていると仮定)

macbookproloreto:vamp-plugin-sdk loreto$ ls -l *.a 
-rw-r--r-- 1 loreto staff 301176 18 Ott 00:35 libvamp-hostsdk.a 
-rw-r--r-- 1 loreto staff 76024 18 Ott 00:35 libvamp-sdk.a 

[OK]をしかし、あなたが知っていることはないため、のは、コマンドotoolでチェックしてみましょう:

macbookproloreto:vamp-plugin-sdk loreto$ otool -hv libvamp-sdk.a 
Archive : libvamp-sdk.a 
libvamp-sdk.a(PluginAdapter.o): 
Mach header 
     magic cputype cpusubtype caps filetype ncmds sizeofcmds  flags 
    MH_MAGIC  ARM   V7 0x00  OBJECT  4  1128 SUBSECTIONS_VIA_SYMBOLS 
libvamp-sdk.a(RealTime.o): 
Mach header 
     magic cputype cpusubtype caps filetype ncmds sizeofcmds  flags 
    MH_MAGIC  ARM   V7 0x00  OBJECT  4  1060 SUBSECTIONS_VIA_SYMBOLS 
libvamp-sdk.a(FFT.o): 
Mach header 
     magic cputype cpusubtype caps filetype ncmds sizeofcmds  flags 
    MH_MAGIC  ARM   V7 0x00  OBJECT  4  584 SUBSECTIONS_VIA_SYMBOLS 
libvamp-sdk.a(acsymbols.o): 
Mach header 
     magic cputype cpusubtype caps filetype ncmds sizeofcmds  flags 
    MH_MAGIC  ARM   V7 0x00  OBJECT  3  500 SUBSECTIONS_VIA_SYMBOLS 

[OK]を、それはのARMv7アーキテクチャです。

さて、戻ってプラグインに再びSDKと次のように

build/osx/Makefile.osx 

を変更:

CFLAGS := -arch armv7 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk -I/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk/usr/include/ -DUSE_PTHREADS 

CXXFLAGS := $(CFLAGS) 

include build/general/Makefile.inc 

[OK]を再びとします:

macbookproloreto:dsp loreto$ make -f build/osx/Makefile.osx 

ブームを!別の問題:

/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk/usr/include/ -DUSE_PTHREADS -I. -c -o dsp/wavelet/Wavelet.o dsp/wavelet/Wavelet.cpp 
cc -arch armv7 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk -I/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk/usr/include/ -DUSE_PTHREADS -I. -c -o hmm/hmm.o hmm/hmm.c 
hmm/hmm.c:21:10: fatal error: 'clapack.h' file not found 
#include <clapack.h>   /* LAPACK for matrix inversion */ 
     ^
1 error generated. 
make: *** [hmm/hmm.o] Error 1 
macbookproloreto:dsp loreto$ vi build/osx/Makefile.osx 

LAPACKが見つかりません。

Apple Docs hereの場合、AppleはiOS4.0からAccelerate.frameworksでLAPACKを導入しました!

は、実際にはclapack.hはここにある: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk/System/Library/Frameworks/Accelerate.framework/フレームワーク/ vecLib.framework /ヘッダ/ clapack.h

それでは../dsp/build/Makefile.osxに

CFLAGS := -arch armv7 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk -I/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk/usr/include/ -I/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk/System/Library/Frameworks/Accelerate.framework/Frameworks/vecLib.framework/Headers/ -DUSE_PTHREADS 

をこのどこかを追加してみましょうそして今のは再びそれを作ってみようが、私はチェックしてみましょうアーチ:

macbookproloreto:dsp loreto$ otool -hv libqm-dsp.a 
Archive : libqm-dsp.a 
libqm-dsp.a(Pitch.o): 
Mach header 
     magic cputype cpusubtype caps filetype ncmds sizeofcmds  flags 
    MH_MAGIC  ARM   V7 0x00  OBJECT  4  516 SUBSECTIONS_VIA_SYMBOLS 
libqm-dsp.a(Chromagram.o): 
Mach header 

音が良い!プラグインフォルダ内の1つ前のレベルに戻って

In file included from plugins/AdaptiveSpectrogram.cpp:15: 
plugins/AdaptiveSpectrogram.h:22:10: fatal error: 'dsp/transforms/FFT.h' file not found 
#include <dsp/transforms/FFT.h> 
     ^
1 error generated. 

あなたはdsp/tranformsフォルダを逃すことができます - gosh!

別のエラー:

clang: error: invalid argument '-install_name qm-vamp-plugins.a' only allowed with '-dynamiclib' 
make: *** [qm-vamp-plugins.a] Error 1 

さんが再びMakefile.osxを修正しましょう:

CFLAGS := -O3 -ftree-vectorize -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk -arch armv7 -I../vamp-plugin-sdk -I/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk/System/Library/Frameworks/Accelerate.framework/Frameworks/vecLib.framework/Headers/ -DUSE_PTHREADS 

CXXFLAGS := $(CFLAGS) 

LDFLAGS := -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk -arch armv7 -lqm-dsp ../vamp-plugin-sdk/libvamp-sdk.a -framework Accelerate -lpthread 

[OK]を、今のエラーは、アーキテクチャ、未定義のシンボルエラーです:要旨here のように長い外観に:

"std::cerr", referenced from: 
    "typeinfo for std::istream", referenced from: 
    "std::ostream::put(char)"" 
    std::ostream::operator<<(int)", 

これは私にを思い出させるC++ライブラリ!

だから、私はブーストを取得し、iOSのためにコンパイルし、それをMakefileに含める必要があります。そうではありませんか?これは長くかかります...

のでhereからiOSのフレームワーク分布としてブーストを取得し、

-I /ユーザ/ロレート/プロジェクト/ AUDIO/LIBS /ブーストを追加した後、今

macbookproloreto:vamp-plugin-sdk loreto$ echo $'\360\237\215\272' 

http://i.stack.imgur.com/ff3kp.png

により、これを行います-ios/Dist/boost.framework/Headers/

私は同じエラーがあります...私は標準のC++ライブラリがないと思いますここに!

macbookproloreto:Headers loreto$ locate libc++.dylib | grep iPhoneOS7.0 
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk/usr/lib/libc++.dylib 

ビンゴ!再び

ので

-I/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk/usr/lib/libc++.dylib 

エラー(DOH)!非常に単純なリンクの問題には成功

-I/usr/lib/libstdc++.dylib 
    -lstdc++ 

Stuckedで試してみました

再び。

macbookproloreto:vamp-plugin-sdk loreto$ echo $'\360\237\215\272' 

http://i.stack.imgur.com/ff3kp.png

エラーの最も興味深い部分がコンパイルされている最初の静的ライブラリである:ここでは

make -f build/osx/Makefile.osx 

c++ -o qm-vamp-plugins.a g2cstubs.o plugins/AdaptiveSpectrogram.o plugins/BarBeatTrack.o plugins/BeatTrack.o plugins/DWT.o plugins/OnsetDetect.o plugins/ChromagramPlugin.o plugins/ConstantQSpectrogram.o plugins/KeyDetect.o plugins/MFCCPlugin.o plugins/SegmenterPlugin.o plugins/SimilarityPlugin.o plugins/TonalChangeDetect.o plugins/Transcription.o libmain.o -L../qm-dsp -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk -arch armv7 -lqm-dsp ../vamp-plugin-sdk/libvamp-sdk.a -framework Accelerate -lpthread 
Undefined symbols for architecture armv7: 
    "std::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >::str() const", referenced from: 
     _VampPlugin::Vamp::RealTime::toString() const in libvamp-sdk.a(RealTime.o) 
     _VampPlugin::Vamp::RealTime::toText(bool) const in libvamp-sdk.a(RealTime.o) 
    "std::basic_ios<char, std::char_traits<char> >::widen(char) const", referenced from: 
     _VampPlugin::Vamp::PluginAdapterBase::Impl::getDescriptor() in libvamp-sdk.a(PluginAdapter.o) 

我々は、コンパイルされ、静的ライブラリの一つは、右が含まれていないことがわかります建築。

私はここ2つの静的ライブラリがあります。

macbookproloreto:qm-vamp-plugins loreto$ otool -hv ../vamp-plugin-sdk/libvamp-sdk.a 
Archive : ../vamp-plugin-sdk/libvamp-sdk.a 
../vamp-plugin-sdk/libvamp-sdk.a(PluginAdapter.o): 
Mach header 
     magic cputype cpusubtype caps filetype ncmds sizeofcmds  flags 
    MH_MAGIC  ARM   V7 0x00  OBJECT  4  1128 SUBSECTIONS_VIA_SYMBOLS 

だから何が持つ問題だ:私はその上でコマンドotool実行した場合、私はCPU時間は、それらの両方のためのARM7であることがわかります

lqm-dsp ../vamp-plugin-sdk/libvamp-sdk.a 

を開発者/ SDK/iPhoneOS7.0.sdk/usr/lib/libC++。dylib?

+1

正常に作成した場合は、iOSライブラリをオンラインにしてください。 – jarryd

+2

はい!私はすべてが働いたらすぐに私は次の日にオンラインに入れます。私はarmv7とarmv7を持っているつもりです。 – loretoparisi

+1

それは素晴らしいです! :) – jarryd

答えて

2

標準ライブラリの使用方法をコードで解説してください。

おそらくデバッグにのみ使用されます。

関連する問題